Left Up Right Programmiersprachen

Java

Informationen und Links

Einordnung

Charakteristik

Verwandschaft zu C++:
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

Neu an java1.5

Erweiterungen

Functional.java
ist eine Bibliothek um funktionales Programmieren in Java zu ermöglichen

Java und die Komponentensysteme

Java und CORBA

Es gibt
  1. IDL zu Java-Abbildung
  2. 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:

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

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

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber