Open Source im professionellen Einsatz

Alt und neu?

Wie andere Sprachen auch ändert Java von Version zu Version das eine oder andere, zum Beispiel das Handling der Generics. Java 5 hatte diese Container-Typangabe für Vektoren oder Ähnliches eingeführt, um für etwas mehr Typsicherheit zu sorgen. In Java 7 änderte sich deren Verhalten wieder.

Wer nun mit gleicher Codebasis Java-ME-Anwendungen für Handys entwickeln will, kämpft damit, dass ME auf Java 1.1 fußt, das die Generics noch nicht kannte. Dann kodiert der Entwickler nach altem Standard und muss mit Warnungen leben. Entwickelt er den Code aber unter Java 5 oder 6 und kommt später auf die Idee, eine Java-ME-Version zu bauen, muss er viel Code umschreiben.

Zum Teil unterscheiden sich die JVMs auch in der Speicherverwaltung, was dazu führen kann, dass die identische Applikation mit dem gleichen den Speicher begrenzenden Parameter unter JVM A einwandfrei läuft und unter JVM B mit vollgelaufenem Speicher abstürzt. 64-Bit-Systeme benötigen zum Beispiel mehr Platz im Heap, weil alle Zeiger doppelt so groß sind. Es ist zwar möglich, entsprechend mehr Speicher zu adressieren, aber auch das Verwalten des Speichers benötigt den doppelten Platz.

Auch bei der Wahl der Entwicklungsumgebung gibt es Feinheiten, die dazu führen, dass derselbe Quellcode in Eclipse funktioniert und sich daraus ein Paket bauen lässt, mit Ant und Javac aber nicht. Der Hintergrund ist, dass Eclipse einen eigenen Java-Compiler verwendet und dieser fehlerhafte Methoden einfach ausblendet. Um den eigenen Testaufwand gering zu halten, supporten daher viele Anbieter kommerzieller, in Java geschriebener Produkte nur genau eine JVM-Version.

Testen, testen, testen

Java-Entwickler plagen bei der plattformunabhängigen Entwicklung viel weniger Sorgen als andere. Die virtuelle Maschine abstrahiert Betriebssystem und Hardware in hohem Maße, selbst für Details wie Byteorder oder Pfadangaben ist gesorgt. Trotzdem erspart dies dem Programmierer nicht, ausgiebig mit verschiedenen Plattformen zu testen. Das müssen nicht alle Java-Versionen auf allen Betriebssystemen sein, aber zumindest die vorletzte. Entwickler von GUI-Applikationen, die Swing als Basis benutzen, sollten zudem ihren Code mit den gängigen Look-and-Feels in Augenschein nehmen. (jk)

Infos

  1. Java ME: http://www.oracle.com/technetwork/java/javame/
  2. Java Platform Standard Edition 7 Documentation: http://download.oracle.com/javase/7/docs/
  3. Carsten Zerbst, "Was Java 7 Neues bringt": Linux-Magazin 09/11, S. 100
  4. "The AWT in 1.0 and 1.1": http://java.sun.com/products/jdk/awt/
  5. "Creating a GUI With JFC/Swing": http://download.oracle.com/javase/tutorial/uiswing
  6. Bernhard Bablok, "Nützliche Komponenten für Swing-Anwendungen – Coffeeshop": Linux-Magazin 04/06, S. 136
  7. "What Is JavaFX?": http://download.oracle.com/javafx/2.0/overview/jfxpub-overview.htm
  8. SWT: http://www.eclipse.org/swt/
  9. JNI: http://download.oracle.com/javase/7/docs/technotes/guides/jni/
  10. JNA: https://github.com/twall/jna

Der Autor

Konstantin Agouros arbeitet bei der N.runs AG als Berater für Netzwerksicherheit. Dabei liegt sein Schwerpunkt im Bereich der Telekommunikationsanbieter. Sein Buch "DNS/DHCP" ist bei Open Source Press erschienen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook