Hallo
Mit Java 6 gibts natürlich viel mehr als die 6 Punkte die hier aufgelistet sind (meine (random) Favs:
- Einfaches Attachen von JMX basierten Management Tools (JConsole, MC4J, etc.) zur Laufzeit ohne
vorher -Dcom.sun.management.jmxremote übergeben zu müssen)
- MXBeans
- Instrumentation -> (Erneute) Manipulation von geladenen Klassen zur Laufzeit
- neues JDBC API
- Eingebauter HttpServer:
Java:
/**
*
*/
package de.tutorials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.util.concurrent.TimeUnit;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
/**
* @author Tom
*
*/
public class HttpServerExample {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
HttpServer httpServer = HttpServer.create(new InetSocketAddress(8080),
0);
httpServer.createContext("/tutorials", new HttpHandler() {
public void handle(HttpExchange httpExchange) throws IOException {
System.out.println(httpExchange);
httpExchange.getResponseHeaders().add("Content-type", "text/html");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter printWriter = new PrintWriter(baos);
printWriter.println("<html><b>Hallo Welt</b></html>");
printWriter.close();
httpExchange.sendResponseHeaders( 200, baos.toByteArray().length );
httpExchange.getResponseBody().write(baos.toByteArray());
httpExchange.getResponseBody().close();
}
});
httpServer.start();
TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
}
}
++++ Performance :
http://java.sun.com/performance/reference/whitepapers/6_performance.html (kommt bald ;-)
Verbesserungen bei Support für Filtern und Sortieren von JTables out of the box... uvm.
zu den genannten Punkten:
1) Tray ist nicht nur "Eye Candy" sondern ein wichtiger Baustan um gut ins Window-System integrierbare Anwendungen zu bauen. (Btw. Tray suppot gabs auch schon früher... Cross-Platfrom (Soweit die Window-Systeme das unterstützen) mit
https://jdic.dev.java.net/ und SWT Tray/TrayItem)
2)Splash Screens ... native Unterstützung für Splashscreens ist ne feine Sache da der Splashscreen schon angezeigt wird bevor die Anwendugn geladen wird. Na ja, ist ein Gimmick aber IMHO nicht so wichtig.
3)WS-API damit wird das erstellen von Webservices so einfach (und noch einfacher) wie das erstellen von Webservices unter .Net ;-) Ist ist aber die Frage wie flexibel das WS API ist und ob damit andere WebService Frameworks wie AXIS, XFire, Hessian, Burlab etc. mit der Zeit aussterben werden, ich denke nicht...
4) Mit der Unterstützung für Script Sprachen innerhalb einer JVM erhält man die wunderbare Möglichkeit
bestimmten Code dynamisch austauschbar zu machen.
Als Beispiel denke man da an sich ständig verändernde Preisberechnungsschemata, Validierungsregeln,
Workflow-Definitionen etc...) die Möglichkeiten sind fast unbegrenzt
Eine gängige Anwendung ist ein in die Anwendung integrierter Interpreter mit dem man zur Laufzeit eigene Skripte definieren und ausführen kann,
die dann Teile der Anwendung steuern, so ne Art VBA für Java ;-) Außerdem stehen neben Jython, Groovy und JRuby auch zahlreiche weitere Sprachen zur Verfügung die sich alle recht einfach integrieren lassen.
5) Na ja, Console API... macht die Sache für Anfänger um einiges leichter, aber das gabs auch schon unter Java 5 mit dem java.util.Scanner ;-)
6) Na ja, direkt ne Derby DB mit Java zu Bundlen ist so ne Sache,... zum einen wird dadurch die Sache für Anfänger um einiges leichter, da sie direkt mit einer Fix und Fertig konfigurierten DB erste JDBC experimente machen können.
Zum anderen wird dadurch aber die größe des JDK's / JRE's ein wenig aufgebläht... ich kann mich noch an Zeiten erinnern als das komplette JRE knapp 9 MB groß war... mit Java 6 sinds 92 MB ...
Genau so sehe ich das auch. Irgendwie geht doch der ganze Grundgedanke der Platformunabhängigkeit flöten oder nicht?!
Der Java Kern ist ja auch Platformunabhängig. Manche Features lassen sich für einige Platformen eben einfacher implementieren als für andere. Die wirklich Platformabhängigen Geschichten betreffen zumeist irgendwelche Elemente der UI da die Implementierungen / Konzepte sich hier teilweise erheblich unterscheiden... außerdem gibt es in der Java Community relativ schnell Lösungen um auf bestimmten Platformen fehlenden Features nachzubauen oder zur Not zu emulieren.
Was ist von dem einzelnen zu halten?
Wie voll/groß soll es noch werden? Klar ist es schön alles aus einem Paket zu bekommen, die Frage ist, ist es nicht irgendwann zu viel/unübersichtlich? Oder sollte man nicht ein paar Sachen aufspalten?
Ich halte Java jetzt schon für unübersichtlich... für jemanden der jetzt neu Anfängt ists wirklich sehr schwer sich einen Überblick zu verschaffen...
Gruß Tom