Programmiersprachen
Java
Informationen und Links
- objektorientierte Sprache
- Anwendungsgebiete
- WWW (Applets und dergl.)
- Textverarbeitung (XML)
- kaufmännisch
- verteilte Anwendungen
Charakteristik
- Verwandschaft zu C++:
-
- Syntaktische Verwandtschaft
- läßt schwierige und problematische C++-Konstrukte weg
- Zeiger
- mehrfache Vererbung
- Templates (ab java 1.5 gibt es generics)
- strukturierte Ausnahmebehandlung
- Multithreading
- Virtuelle Maschine
- Automatische Speicherverwaltung (Garbage-Collection)
- Umfangreiche API
-
Java API
und darüber hinaus große Community
Details siehe in J.Gosling,H McGilton: "The Java Language Environment" 1996
Laufzeitumgebung
- Java Virtual Machine
- Der Compiler übersetzt die Klasse in Bytecode, der von der JVM ausgeführt
wird. Die JVM ist auf allen Rechnerarchitekturen gleich.
Zur Laufzeit wird der Bytecode dann in Maschinensprache umgesetzt, so
daß Java-Programme nicht wesentlich langsamer sein sollen
siehe About the Java Technology
.
(Trotzdem erscheinen Java-Programme als Dick und fett !?)
Bemerkung: Bei Pascal wurde das auch mal so gemacht.
- Automatische Garbage-Collection bei dynamischen Speicher
- Nicht mehr gebrauchte Speicherallokationen werden automatisch wiederverwendet. Damit werden Speicherlöcher vermieden.
- Umfangreiche Laufzeitbibliothek
- AWT sieht auf jedem Rechner gleich aus
- Sicherheitsumgebung
- z.B. Applets dürfen nichts auf der Festplatte machen
Häufiges Mißverständnis: Applets haben zwar Java bekannt gemacht (zusammen mit Netscape), Java beschränkt sich aber nicht darauf.
Anfragen
Neu an Java 2 jdk1.2x, jdk1.3
- Sicherheitsarchitektur überarbeitet (signed Applets)
- Swing-Klassenbiliothek (MVC-Paradigma)
- Ein ORB gehört zum Ablaufsystem, RMI als RMI-IIOP basiert nun auf CORBA
Neu an java1.5
Erweiterungen
- Functional.java
- ist eine Bibliothek um funktionales Programmieren in Java zu ermöglichen
Es gibt
- IDL zu Java-Abbildung
- und auch eine Java zu IDL, damit IDL-unkundige Java-Freunde an die CORBA-Welt teilnehmen können
Seit Java 1.2 ist ein CORBA-ORB in der Sun-JDK JVM enthalten
Spezielle Java-Komponentensysteme
Schnittstelle zu C/C++
Konzeptionell sollten Komponentensysteme bevorzugt werden. Aber wenn man eine Bibliotek oder das Betriebssystem aufrufen will, ist das möglicherweise zu Aufwendig, hier z.B. einen CORBA-Dienst aufzusetzen.
- JNI - Java-Native-Interface
-
WP
- JNA Java native Access
-
WP:
Hier kann Java auf shared-Objekts (Unix) oder DLL (Windows) zugreifen
Werkzeuge
SWIG generiert auch Schnittstellen zu Java
Java-Programmiertools
Java Entwicklungstools
Andere Umgebungen
- Neben dem Bytecode-Compilern gibt es aber auch statische Compiler, die eine maschinenspezifische ausfürbare ("native") Programme erzeugen:
-
- GCJ, der Java-Compiler der GNU-Compiler-Collection
-
- JET
- Ein Native-Compiler aus Novosibirsk Scientific Centre, Russia
Java2Exe Artikel,
diskutiert Vorteile der nativen Compilierung:
- Performance
- Leicher zu nutzen und Administrieren
- DalvikVM
- Registermaschine für Android
- .NET
- Im Prinzip ist .Net ja eine Konkurrenz zur JVM, die für mehrere Sprachen gedacht ist - die JVM ist eigentlich für eine Sprache auf mehreren Umgebungen gedacht (Solaris/SPARC, Linux/ix68, Windows/ix68, ...)
Eigentlich ist es wünschenswert, dass Java auch auf .NET läuft:
- J# war die Implementierung von Microsoft, die dann aber aus Lizenzproblemen nicht fortgeführt werden darf
- ILVM.NET (Quelle Wikipedia)
ist eine JVM-Implementation auf .NET
Dialekte
- Xtend
Tips und Tricks
Sonstige Werkzeuge
CUP Parser Generator for Java
Java Decompiler HOWTO beschreibt, wie man den Quellcode aus dem Bytecode gewinnen kann.
Links
Regeln für sicheres Programmieren
SEI CERT Oracle Coding Standard und Java Coding Guidelines
Programme in Java
Java Applikationen
JAVA-Technologien
- JavaSE Tutorials gibt einen Überblick über Java Technologien.
Java SE ist nach [WP] "Java Platform Standard Edition" und ist die Sammlung von APIs
Java-Community
Java ist eine OO-Sprache, in der nun viele Entwickler ein gemeinsames Technologieverständnis entwickelt haben.
Die umfangreiche API für viele verschiedene Zwecke hat zu diesem gemeinsamen Verständnis beigetragen.
Daher gibt es auch eine breite Basis von wiederverwendbaren Komponenten.
Mit maven kann man daher die verwendeten Bibliotheken aus maven-Repositories der Welt zusammensuchen lassen.
- Java users Group Deutschland e.V
Andere:
- Apache.org hat sehr wichtige Software
- wie XML-Tools (xerces,Xalan) und ganze Infrastukturen wie Apache service Mix
- Codehaus.org
- mit Prozessen und Codeinspektionswerkzeugen
- http://www.java2s.com/
- Sammlung von Dokumentation verbreiteter Java-Klassen
Allerdings sehr anonym nur der nackte Inhalt und Werbung, man erfährt nicht, wer das gemacht hat und was dort gewollt ist
Seiten über Java Programierung
- Programm Creek
- Java-Aspekte und Beispielcode
- Grepcode
- Suche nach Codebeispielen
Sonstiges
- Zeichensätze
- Nebenläufigkeit
- Glossar
Rudolf Weber