java ee is back in town
DESCRIPTION
Die Java Enterprise Edition erlebt derzeit eine wahre Renaissance – und dies zurecht. Und auch das viel gescholtene Komponentenmodell EJB ist spätestens seit der Version 3.0 wieder salonfähig, bekommt mit CDI aber Konkurrenz aus den eigenen Reihen. Die Session zeigt, dass Java EE dank der Umorientierung hin zu "Ease of Development" und "Flexibility" deutlich mehr zu bieten hat als nur eine lose Sammlung von Spezifikationen. Es werden dabei die wichtigsten Neuerungen und Kernkonzepte von Java EE 5/6 erläutert und verdeutlicht, warum genau jetzt der richtige Zeitpunkt ist, auf Java EE zu setzen.TRANSCRIPT
powered byLars Röwekamp Java EE
Java EE
JavaEE is back in Town
Dienstag, 10. Mai 2011
J2EE 2003
“oh nooo!“
Dienstag, 10. Mai 2011
Java EE 2010
“oh yeah!“
Dienstag, 10. Mai 2011
What was the Deal about?Walk of Pain. Walk of Fame. What‘s next?
Dienstag, 10. Mai 2011
The Deal: Business, not Infrastructure
Dienstag, 10. Mai 2011
I‘ am a
BusinessDeveloper
Dienstag, 10. Mai 2011
„The Java™ Platform, Enterprise Edition (J2EE) reduces the cost and
complexity of developing multitier, enterprise services.
Java EE applications can be rapidly deployed and easily enhanced as the enterprise responds to competitive
pressures.“
Zitat: Java™ Platform, Enterprise Edition (J2EE) Specification, v1.4
Dienstag, 10. Mai 2011
„The Java™ Platform, Enterprise Edition (J2EE) reduces the cost and
complexity of developing multitier, enterprise services.
Java EE applications can be rapidly deployed and easily enhanced as the enterprise responds to competitive
pressures.“
Zitat: Java™ Platform, Enterprise Edition (J2EE) Specification, v1.4
Dienstag, 10. Mai 2011
J2EE? WT #?*K !Walk of
Pain
Dienstag, 10. Mai 2011
Schneller!Höher!Weiter!
Dienstag, 10. Mai 2011
Schneller!Höher!Weiter!
Aber wohin?
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Nix als Probleme ...
Dienstag, 10. Mai 2011
12
ProblemfeldKomplexität
Dienstag, 10. Mai 2011
13
Problemfeldtech. Schwachstellen
Dienstag, 10. Mai 2011
14
ProblemfeldPerformance
Dienstag, 10. Mai 2011
15
HauptproblemfeldEnterprise JavaBeans
Dienstag, 10. Mai 2011
No more EJB!
No more
Complexity!
Dienstag, 10. Mai 2011
No more EJB!
No more
Complexity!
No more
J2EE
Container!
Dienstag, 10. Mai 2011
... but ...
much more FUN, pleeeeease!
Dienstag, 10. Mai 2011
Walk of Pain
Problem: „Komplexität &tech. Schwachstellen“
Dienstag, 10. Mai 2011
Walk of Pain Antwort I: „Patterns“
Problem: „Komplexität &tech. Schwachstellen“
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Walk of Pain
Problem: „Komplexität &tech. Schwachstellen“
Antwort II: „Alternativen“
Dienstag, 10. Mai 2011
ProblemInnovation
CommunitySolution
Community
Feedback
ProprietarySolution
???
Dienstag, 10. Mai 2011
ProblemInnovation
CommunitySolution
Community
Feedback
ProprietarySolution
???
¡ Spring Framework¡ Hibernate¡ Google Guice¡ Hivemind¡ Pico
Dienstag, 10. Mai 2011
ProblemInnovation
CommunitySolution
Community
Feedback
ProprietarySolution
???
¡ Spring Framework¡ Hibernate¡ Google Guice¡ Hivemind¡ Pico
Dienstag, 10. Mai 2011
ProblemInnovation
Standardsbased on
CommunitySolutions
¡ Spring Framework¡ Hibernate¡ Google Guice¡ Hivemind¡ Pico
¡ JAVA EE
CommunitySolution
Community
Feedback
Dienstag, 10. Mai 2011
Walk of Fame
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Ease of Development & Flexibility
Dienstag, 10. Mai 2011
EoD:Convention over ...
Dienstag, 10. Mai 2011
Weniger ist mehr ...
Dienstag, 10. Mai 2011
@ManagedBean
public class LoginBean {
! private String userName; !private String passwordName; ! ...
}
EoD: Convention over ...
Dienstag, 10. Mai 2011
@ManagedBean(name=“loginBean“) @RequestScoped public class LoginBean {
! private String userName; !private String passwordName; ! ...
}
EoD: Convention over ...
Dienstag, 10. Mai 2011
@Stateful public class ShoppingBean {
! private List<Items> items; !! public void addItem(Item item) {...}; ... }
EoD: Convention over ...
Dienstag, 10. Mai 2011
@Stateful public class ShoppingBean implements ... {
! private List<Items> items; ! // Transactional by default! public void addItem(Item item) {...}; ... }
EoD: Convention over ...
Dienstag, 10. Mai 2011
@Stateless(name=“MyEjb“) @Local(MyInterface) @PermitAll @TransactionManagement(value=
TransactionManagementType.CONTAINER) public class MyEjb implements MyInterface { @TranactionAttribute(value=REQUIRED) public void myBusinessMethid() { // some implementation
} ...
}
EoD: Convention over ...
Dienstag, 10. Mai 2011
@Stateless(name=“MyEjb“) @Local(MyInterface) @PermitAll @TransactionManagement(value=
TransactionManagementType.CONTAINER) public class MyEjb implements MyInterface { @TranactionAttribute(value=REQUIRED) public void myBusinessMethid() { // some implementation
} ...
}
EoD: Convention over ...
Dienstag, 10. Mai 2011
<empty />*)
Dienstag, 10. Mai 2011
<empty />*)
*) XML optional nutzbar
Dienstag, 10. Mai 2011
package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
! ...
}
EoD: XML-less Deployment ...
Dienstag, 10. Mai 2011
package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
! ...
}
EoD: XML-less Deployment ...
<!--Deployment descriptor web.xml --><web-app> <servlet> <servlet-name>ShopServlet</servlet-name> <servlet-class> de.openknowledge.shop.ShoppingServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>ShopServlet</servlet-name> <url-pattern>/doShopping</url-pattern> </servlet-mapping>...</web-app>
Dienstag, 10. Mai 2011
package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
! ...
}
EoD: XML-less Deployment ...
<!--Deployment descriptor web.xml --><web-app> <servlet> <servlet-name>ShopServlet</servlet-name> <servlet-class> de.openknowledge.shop.ShoppingServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>ShopServlet</servlet-name> <url-pattern>/doShopping</url-pattern> </servlet-mapping>...</web-app>
Dienstag, 10. Mai 2011
EoD: Dependency Injection
Dienstag, 10. Mai 2011
@WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup(! ! ! “jdbc/myDataSource“ );! ds.getConnection(); ...! } }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
@WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup(! ! ! “jdbc/myDataSource“ );! ds.getConnection(); ...! } }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
@WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup(! ! ! “jdbc/myDataSource“ );! ds.getConnection(); ...! } }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
@WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet ! ! ! ! implements HttpServlet {
! @Resource(“jdbc/myDataSource“) private DataSource ds;
! public void doGet() { ds.getConnection(); ...! } ... }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
EoD:Plain old Java ObjectsDienstag, 10. Mai 2011
EoD: Plain old Java Objects ...
Dienstag, 10. Mai 2011
public interface SCart { public void addItem(Item item); }
@Stateful(name=“ShoppingCart“) public class SCartEJB implements SCart {
private List<Items> items; public void addItem(Item item) {...}; ... }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
public interface SCart { public void addItem(Item item); }
@Stateful(name=“ShoppingCart“) public class SCartEJB implements SCart {
private List<Items> items; public void addItem(Item item) {...}; ... }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
public interface SCart { public void addItem(Item item); }
@Stateful(name=“ShoppingCart“) public class SCartEJB implements SCart {
private List<Items> items; public void addItem(Item item) {...}; ... }
EoD: Dependency Injection ...
Dienstag, 10. Mai 2011
Ease of Development & Flexibility
Dienstag, 10. Mai 2011
Flexibility: API Overloading
Dienstag, 10. Mai 2011
Different ProfilesDifferent Needs
Dienstag, 10. Mai 2011
Flexibility: Java EE Profiles
Dienstag, 10. Mai 2011
Flexibility: Java EE Profiles
Dienstag, 10. Mai 2011
Flexibility: Java EE Profiles
Dienstag, 10. Mai 2011
Flexibility: Java EE Profiles
Dienstag, 10. Mai 2011
Session Beans
JPA 2.0
Interceptors
Tx & Security
Local & None
Flexibility: EJB Lite
Dienstag, 10. Mai 2011
Flexibility: EJB Lite
MDB
Entity Beans
Web Services
Timer & Async
Remote
Dienstag, 10. Mai 2011
Flexibility: Component Models
Dienstag, 10. Mai 2011
Flexibility: Component Models
Enterprise JavaBeans
Dienstag, 10. Mai 2011
Flexibility: Component Models
Enterprise JavaBeans
Life Cycle Mmgt.
Instance Pooling
Concurrency
Transaction
Security
Scoping
...
Dienstag, 10. Mai 2011
Flexibility: Component Models CDI Beans
Dienstag, 10. Mai 2011
Flexibility: Component Models CDI Beans
Life Cycle Mmgt.
Scoping
... AND ...
*** Extensibility ***
Dienstag, 10. Mai 2011
Flexibility: Component Models CDI Konzepte
Dienstag, 10. Mai 2011
Flexibility: Component Models CDI Konzepte
Typensicher DI(Stereotypes, Qulifier)
Loose Koopelung(Events, Interceptors)
Sichtbarkeiten(Sopes, LifeCycle )
„FACHLICHE INJECTION“
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Java EE 7
Dienstag, 10. Mai 2011
Java EE 7
„The Cloud Edition“
Dienstag, 10. Mai 2011
Java EE 7
„The Cloud Edition“
Easely operate on Clouds
Latest Web Standards
PaaS Support
Multi-Tenancy
Elasticity
Modularity
Versioning
Dienstag, 10. Mai 2011
...Dienstag, 10. Mai 2011
Java EE 7
...Dienstag, 10. Mai 2011
Java EE 7
„The Cloud Edition“
...Dienstag, 10. Mai 2011
Java EE 7
„The Cloud Edition“
Expression Language 3.0
Java Messaging Service 2.0
Java Server Faces 2.2
Java Persistence API 2.1
CDI 1.1
JAX-RS 2.0
Web Sockets
Java JSON API
Cuncurrency & Caching...
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Java EE 7
Dienstag, 10. Mai 2011
Java EE 7„The Cloud Edition“
Dienstag, 10. Mai 2011
Java EE 7„The Cloud Edition“ „Ja“
Dienstag, 10. Mai 2011
Java EE 7„The Cloud Edition“ „Ja“
(a.k.a. Q3 / 2012)
Dienstag, 10. Mai 2011
Dienstag, 10. Mai 2011
Java EE
Java EE
StartUpgradeSwitch
Dienstag, 10. Mai 2011
Gibt es noch Fragen?
Dann los ...
Dienstag, 10. Mai 2011