iX Developer Programmieren heute 01/2012
7,99 €*
Lieferzeit Sofort lieferbar
Highlights:
- Parallelprogrammierung
- Webentwicklung
- Softwarearchitektur
- Programmiersprachen
- Agile ALM & Kanban
Parallelprogrammierung
Sollen Softwareentwickler die Kunst der Multi-Core-Programmierung erlernen oder gelingt es, die Komplexität der Parallelisierung hinter der sequenziellen Illusion zu verstecken? Die Community weiß die Antwort (noch) nicht. Darum sollte jeder die grundlegenden Begriffe, Probleme, Lösungsansätze und Paradigmen kennen.
Agile ALM
Vor allem durch den Erfolg von Open-Source-Software und die Verbreitung agiler Praktiken hat sich die Landschaft des Application Lifecycle Management in den letzten Jahren grundlegend verändert. Trotz der damit einhergehenden Innovation bleibt die große Herausforderung die Integration zwischen den Tools.
Webentwicklung
Dynamische Webapplikationen vollgepackt mit Mobile und Echtzeit setzen neue Techniken voraus. Webentwickler müssen sich daher mit den damit einhergehenden Konzepten vertraut machen. Das Wichtigste über die neue Webwelt aus HTML5, Serverside JavaScript, Browser-IDEs und mobilen Webframeworks
-
Parallelprogrammierung
- Multi-Core-Programmierung
Grundsätzliches zur nebenläufigen und parallelen Programmierung - STM
Software Transactional Memory in Clojure - Aktoren
Aktor-Programmierung am Beispiel von Akka - MapReduce
Nebenläufigkeit in Googles Programmiersprache Go - Dataflow
Nebenläufigkeit am Beispiel von Groovy - Multithreading
Concurrency-Bibliotheken bei .Net und Java - Thread-Programmierung
Nebenläufige Programmstrukturen in C++11
Agile ALM
- Application Lifecyle
Von Open Source zu Enterprise: Das neue Gesicht von ALM - Versionskontrolle
Über den Status quo verteilter Versionsverwaltungssysteme - Build-Tools
SBT und Gradle: Aufstrebende Konkurrenz für Ant und Maven - Continuous Integration
Kontinuierliches Integrieren in Zeiten agiler Programmierung - Build-Management
Pünktliche Releases mit Continuous Delivery - Qualitätssicherung
Auswertung der Umfrage „Softwaretest in der Praxis“ - Security
Softwaresicherheit durch Application Lifecycle Management - Recht
Vertragliche Tücken der agilen Softwareentwicklung
- Multi-Core-Programmierung
Webentwicklung
- HTML5 I
Bedeutung und Einsatz von HTML5 in der Praxis - HTML5 II
WebSocket: Annäherung an Echtzeit im Web - Tools
Browser-Entwicklungsumgebungen im Vergleich - Skriptsprache
Objektorientiert, integriert, effizient entwickeln in JavaScript - Serverside JavaScript
Programmierung mit Node.js - Mobile Plattformen
Aktuelle UI- und Hybrid-Frameworks für mobile Webapplikationen
Trends
- Programmiersprachen
Aktuelles zur Entwicklung von Programmiersprachen - Domain Specific Languages
Interne DSLs: Programmiersprachen in Programmiersprachen einbetten - Softwarearchitektur
Event Based Components: Softwarearchitektur in neuem Licht - Big Data
Datenverarbeitung im Zeitalter des Web 2.0 - RAD
Renaissance des Rapid Application Development - PaaS
Platform as a Service – eine Übersicht der Angebote
Methoden
- DevOps
Neuartige Zusammenarbeit zwischen Softwareentwicklung und Betrieb - Kanban
Software-Kanban im Einsatz - Weiterbildung
Bessere Softwareentwickler dank Coding-Dojos und Code-Katas
Parallel und agil
Dass das Internet die Art und Weise, wie Menschen leben, denken, arbeiten und ihre Umgebung wahrnehmen, maßgeblich verändert hat, ist eine Binsenweisheit. Davon am meisten betroffen war und ist die IT-Branche, liegt es doch in ihrer Aufgabe, die Wünsche und Anforderungen webaffiner Individuen und Unternehmen zu befriedigen. Das hat zu komplexen Softwarearchitekturen und riesigen Datenmengen geführt – und wer glaubt, dass das Datenaufkommen im Internet über die letzten 20 Jahre weitgehend gleichmäßig gestiegen ist, irrt gewaltig. So sahen Experten für die letzten fünf Jahre eine Datenexplosion um den Faktor 10, und das wird sich wohl auch in den nächsten Jahren exponentiell weiter vervielfachen.
Zur Bewältigung dieser Aufgabe sind die eingeschlagenen Wege verschieden. Mittlerweile gibt es zum Beispiel zahlreiche Verfahren, den Datentransfer softwareseitig zu beschleunigen, auf der Hardwareseite sind etwa Multi-Core- und Many-Core-Plattformen en vogue. Laut den Analysten von IDC sind 2011 bereits die Hälfte der gelieferten Prozessoren Dual-Core-Systeme; Plattformen mit einem Kern werden mit nur noch etwa 10 Prozent Anteil fast zum Nischenprodukt. Doch schon 2013 sollen die Dual-Cores das gleiche Schicksal erfahren. Die Marktforscher sehen dann 30 bis 35 Prozent Quad-Cores und circa 50 Prozent für Systeme mit mehr als vier Kernen.
Heißt das nun, dass sämtliche Software für die neuen Prozessorarchitekturen neu oder umzuschreiben ist? Sicherlich nicht. Allerdings sollten sich Entwickler jetzt mit den zahlreichen Konzepten in der parallelen Programmierung auseinandersetzen, um abwägen zu können, ob sie aus ihren neuen oder bestehenden Applikationen dank der Mehrkernsysteme mehr Leistung herausholen können.
Die Konzepte zur parallelen und nebenläufigen Programmierung – die wichtigsten werden in diesem Heft vorgestellt – sind größtenteils gar nicht so neu. Sie erfahren jedoch durch die mittlerweile bestehenden Hardwarevoraussetzungen eine neue, berechtigte Aufmerksamkeit. Gewisse Vorteile bei ihrer Implementierung haben sicherlich junge Sprachen wie Clojure, Scala und Go, die eben zu einer Zeit entstanden sind, als abzusehen war, dass Moore’s Law zur Verdopplung der Geschwindigkeit der Prozessoren alle 18 bis 24 Monate nur noch bedingt greift. Sie werden teilweise explizit zur Parallelisierung entwickelt. Schwieriger haben es hingegen verbreitete Plattformen wie Java und C++, die den Ballast mehrjähriger Entwicklungen mittragen müssen und dadurch hinsichtlich des Innovationsgrads behäbig erscheinen. Deswegen dauert es bei ihnen länger, die Konzepte paralleler und nebenläufiger Programmierung zu realisieren. Dafür können Anwender frühzeitig auf eine Vielzahl an Bibliotheken zurückgreifen, die es wie Fork/Join bei Java 7 oder Boost.Thread in C++11 endlich in die Standards gepackt haben.
Es ist jedoch nicht allein damit getan, die Beschleunigung nur bei Prozessoren und Programmiersprachen zu suchen. Agile Praktiken tragen ebenfalls zu einer effizienteren und schnelleren Softwareentwicklung bei. Von daher ist es nicht verwunderlich, dass gerade Entwickler von Open-Source-Software versuchen, die mit „Agile“ einhergehenden Prinzipien in ihren Werkzeugen zu berücksichtigen. Mit Erfolg – wie an den in diesem Heft genannten Agile-ALM-Werkzeugen zu sehen ist. Sogar so erfolgreich, dass die Hersteller kommerzieller Plattformen für das Application Lifecycle Management damit werben, jetzt Open-Source-Versionskontrollsystem X, Open-Source-Build-Tool Y oder Open-Source-Continuous-Integration-Server Z zu unterstützen.
iX und heise Developer wünschen viel Spaß beim Vertiefen auch in die anderen Trendthemen des dritten iX Developer-Sonderhefts.
Alexander Neumann
PS: iX, heise Developer und der dpunkt.verlag bieten im kommenden Mai mit der parallel 2012 übrigens eine Konferenz zur Parallelprogrammierung an.
Intel Parallel Studio XE 2011:
Die Toolsuite für die Parallelprogrammierung kombiniert Intels C++- und Fortran-Compiler, Performance- und Parallel-Bibliotheken mit den Profiling-Werkzeugen Intel Inspector XE und Intel VTune Amplifyer XE (30-tägige Testversion).
Eclipse 3.7.1 für Java-Entwickler:
Das erste Service Pack der aktuellen Version der Java-Entwicklungsumgebung berücksichtigt die mit Java 7 eingeführten neuen Sprach-Features.
Visual Studio 2010 Ultimate Edition:
Die Entwicklungsumgebung für das Application Lifecycle Development bietet Teams ein umfassendes Paket von Verwaltungstools für den gesamten Lebenszyklus von Anwendungen (30-tägige Testversion).
Tasktop Dev 2.1.0:
bietet eine Integration von ALM-Tools innerhalb von Eclipse und Visual Studio (30-tägige Testversion).
Kaazing WebSocket Gateway:
ein WebSocket-Server, der verschiedene Protokolle und Client SDKs anbietet.
31 Episoden des SoftwareArchitekTOUR-Podcasts
Anmelden