Durch die Java EE 5 ist es gelungen, die Komplexität der Entwicklung von Enterprise-Anwendungen drastisch zu reduzieren und mächtige Defaults zur Verfügung zu stellen. Entwickler sollen mit Hilfe der Java EE 5 Software Web Services und SOA-Applikationen (Service-oriented Architecture) der nächsten Generation erstellen. Neuen Techniken, wie die APIs Enterprise JavaBeans 3.0 (EJB) und JavaServer Faces sowie das Java Persistence API und das "Java API for XML-based Web Services" (JAX-WS), sollen die Entwicklung von Web- und Unternehmensapplikationen beschleunigen.
1. Java EE 5
Was bringt die neue Java Enterprise Edition 5?
Dirk Weil, GEDOPLAN GmbH
2006-11-07
2. Java EE 5
JSR 244 von 05/2004
Final Release am 11.05.2006
Implementierungen
Glassfish
Sun Java System Application Server PE 9
JBoss (EJB-3-Preview)
BEA WebLogic 9 (Integration mit Spring Pitchfork)
Oracle (EJB-3-Container)
SAP WebAS
?
2
3. Technologie-Neuerungen
Component Model Technologies
EJB 3.0 / Java Persistence
JavaServer Faces 1.2
JavaServer Pages Standard Tag Library
3
5. Hauptziel: Vereinfachungen
Java-Annotationen statt XML-Descriptoren
Meta-Daten im Quellcode (Java 5 !)
Descriptoren werden überflüssig
Descriptoren können weiterhin genutzt werden
Configuration by Exception
Vielfältige Defaults
Nur Ausnahmen verlangen explizite Parameter
5
6. Hauptziel: Vereinfachungen
Technische Interfaces entfallen
Geringe Abhängigkeit von der Umgebung
Geringerer Entwicklungsaufwand
Viele J2EE-Patterns werden überflüssig
6
7. EJB 3.0: Erstellung von Beans
Business-Interface
Implementierung durch POJO
Annotationen statt XML-Konfiguration
Keine technischen Interfaces
Keine RemoteException
7
8. EJB 3.0: Erstellung von Beans
@Remote
public interface SrvInfo
{
public long getFreeMemory();
}
@Stateless
public class SrvInfoBean implements SrvInfo
{
public long getFreeMemory()
{
return Runtime.getRuntime().freeMemory();
}
}
8
9. EJB 3.0: Dependency Injection
ENC-Werte können in Bean injiziert werden
Umgebungs-(Konfigurations-)werte
Ressource-Referencen
EJB-Referenzen
9
10. EJB 3.0: Dependency Injection
@Stateless
public class EnvEntryDemoBean
{
@Resource(name="mwstSatz")
private Double mwstSatz = 0.16;
…
@Stateless
public class ResRefDemoBean
{
@Resource(name = "jdbc/defaultDS")
private javax.sql.DataSource defaultDS;
…
@Stateless
public class EJBRefDemoBean implements EJBRefDemo
{
@EJB
private EnvEntryDemo ejbRef;
…
10
11. EJB 3.0
Früher ungleich höherer Aufwand
Technische Interfaces (EJBObject, SessionBean ...)
Bean implementierte Remote Interface nicht
Home Interface nötig
Konfiguration im Deployment Descriptor
RemoteException
Expliziter Lookup der Umgebungswerte und Referenzen
11
12. Java Persistence
Entities
Leichtgewichtig à la JDO oder Hibernate
Annotierte POJOs
Zugriff über Entity Manager
injected, kein expliziter Lookup
Detachable
12
13. Java Persistence
@Entity
@NamedQuery(name = "findAllAccounts",
query = "SELECT a FROM Account a")
public class Account implements Serializable
{
private int id;
private String owner;
private double balance;
@Id
@GeneratedValue
public int getId() { return id; }
public void setId(int id) { this.id = id; }
...
}
13
14. Java Persistence
Relationen @ManyToOne
@JoinColumn(name="OWNER_ID")
public Person getOwner()
{
return owner;
}
Vererbung
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class GeschaeftsPartner
{
…
14
15. Java Persistence
Deutlich besser als EJB 2.x Entity Beans
Keine Interfaces nötig
Kein Deskriptor
Vererbung problemlos
Leistungsfähige Abfragesprache
Als Value Objects nutzbar
15
16. JavaServer Faces
Komponenten für Web-Anwendungen
Statusbehaftet
Event-Modell
Template Engine z.B. JSP, Facelets
Leistungsfähige Expression Language
16
17. Web Services
Auch hier: Annotationen
Keine zusätzlichen Build-Tools nötig
@WebService()
public class Hello
{
@WebMethod()
public String sayHello(String name)
{
return "Hello, world";
}
}
17
18. Web Services
Automatische Generierung der WS-Infrastruktur
WDSL
RPC-Mapping
webservice.xml
18