Java EE is back in Town

900 views
840 views

Published on

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.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
900
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • Java EE v5 (JSR 244): Mai 2006\n Servlet 2.5, JSP 2.1 / JSF 1.2, EJB 3.0\n\nJava EE v6 (JSR 316): Dezember 2009\n Servlet 3.0, JSP 2.1 MR / JSF 2.0. EJB 3.1, JPA 2.0, CDI\n
  • AGENDA\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Entwicklung, \nKonfiguration\nDeployment\n\nViele Bücher sind eher ein Zeichen für Komplexität statt Beliebtheit!\n
  • Vorgegebene Ableitungshierarchie -> keine Pojos möglich, kein Unit-Testing\nSchichtenspezifische Lösungen (Validierung, Entitäten)\nPersistence = Worst case scenario\n
  • Sehr schlechte Lernkurve Lernkurve\nEntwicklung, da Komplexiät\nLaufzeit, da Runtime Overhead\n
  • Patterns ohne Ende\nCode ohne Ende\nXML ohne Ende\nFehlende Testbarkeit dank Ableitungshierarchie \nContainer Managed Persistence als größtes Problem\n
  • Problem: Alles Technologien und Ansätze, die nicht in der Praxis erprobt sind\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Praxiserprobte Lösungen aus der Community für die Community.\nSehr gute Idee ABER Proprietär!\n
  • Praxiserprobte Lösungen aus der Community für die Community.\nSehr gute Idee ABER Proprietär!\n
  • Praxiserprobte Lösungen aus der Community für die Community.\nSehr gute Idee ABER Proprietär!\n
  • Praxiserprobte Lösungen aus der Community für die Community.\nSehr gute Idee ABER Proprietär!\n
  • Community erprobtes fließt in den Standard.\nStandard und Open Source Community arbeiten „Hand in Hand“\nDas ist der Schlüssel zum Erfolg.\n
  • \n
  • \n
  • \n
  • Teil 1: Ease of Development\n
  • Teil 1: Ease of Development\nConvention over Code & Configuration\n
  • Grundidee: Weniger ist mehr (Produktivität)\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Teil 1: Ease of Development\nDeployment OHNE XML\n\nWeniger ist mehr ... Ist weniger!\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Teil 1: Ease of Development\nDependency Injection\nHollywoodprinzip: „Don‘t call us – we call you“\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Sinnvolle Defaults\nWeniger Code – weniger Fehler\n
  • Auflösung von Abhängigkeiten übernimmt Laufzeitumgebung\n \n „Abhängigkeiten“ sind ausgewählte \n Membervariablen und/oder (Field-Injection)\n Setter-Methoden und/oder (Setter-Injection)\n Konstruktoren (Constructor-Injection)\n \n Ausgangsbasis Annotationen\n @Resource\n @EJB\n @Inject\n \n Optionales Management via XML er\n
  • Teil 1: Ease of Development\nSimple Objekte statt komplexe, technologiebedingte Vererbungshierarchien \nVorteil: Testbarkeit!\n
  • TESTBARKEIT!\n
  • Testbarkeit\n
  • Testbarkeit\n
  • \n
  • Java EE 5 – Das Problem\n Vollständiger Stack ist nach wir vor komplex\n Real Life Projekt nutzen oft nur „Teil-Stacks“\n \nJava EE 6 – Die Lösung\n Anbieten von „Smart-Stacks“\n Java EE Profiles als Basis\n EJB Lite als „leichgewichtige“ EJB Variante\n
  • Web Anwendungen\nWeb Services\nIntegrationsprojekte\nPortale\nRich Client Server Backend\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • JTA, einige JSR 250 Annotationen und JNDI „java:“ Naming Context sind Base Proifle \n http://it-republik.de/jaxenter/artikel/Java-EE-6-Web-Profile-3529.html\n \n EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • EJB Lite\n \n Basis für „Web Server Java EE“\n Web Container als Runtime\n EJB Deployment im WAR\n
  • \n
  • \n
  • \n
  • Typensicheres DI: Types, Qualifier\nLoose Koppelung: Events, Interceptors, Decorators\nSichtbarkeiten: Context, Scopes, Lifecycle Awareness\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Expert Group ist „gerade“ gegründet. \n
  • Expert Group ist „gerade“ gegründet. \n
  • Expert Group ist „gerade“ gegründet. \n
  • Expert Group ist „gerade“ gegründet. \n
  • Convention over Code/Configuration\nDependency Injection\nPlain old Java / Keep it simple (Pojos = Testbarkeit)\nFlexibility (via Profiles)\n\n
  • \n
  • \n
  • Java EE is back in Town

    1. 1. JavaEE is back in Townpowered byLars Röwekamp Java EE EE Ja va
    2. 2. J2EE 2003“oh nooo!“
    3. 3. Java EE 2010 “oh yeah!“
    4. 4. What was the Deal about?Walk of Pain.Walk of Fame.What‘s next?
    5. 5. The Deal:Business, not Infrastructure
    6. 6. I‘ am aBusinessDeveloper
    7. 7. „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
    8. 8. „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
    9. 9. J2EE?Walk of WT #?*K ! Pain
    10. 10. Schneller! Höher! Weiter!
    11. 11. Schneller! Höher!Aber wohin? Weiter!
    12. 12. Nix alsProbleme ...
    13. 13. ProblemfeldKomplexität 12
    14. 14. Problemfeldtech. Schwachstellen 13
    15. 15. ProblemfeldPerformance 14
    16. 16. HauptproblemfeldEnterprise JavaBeans 15
    17. 17. ! ore EJBNo m No more y! p lexit Com
    18. 18. B! or e EJ No m No more y! it plex ComNo more J2EE ! rCo ntaine
    19. 19. ... but ...much more FUN, pleeeeease!
    20. 20. Walk of PainProblem: „Komplexität & tech. Schwachstellen“
    21. 21. Walk of Pain Antwort I: „Patterns“Problem: „Komplexität & tech. Schwachstellen“
    22. 22. Walk of Pain Antwort II: „Alternativen“Problem: „Komplexität & tech. Schwachstellen“
    23. 23. Proprietary Problem Solution Innovation ??? nity CommunityCommu k c Solution Feedba
    24. 24.  Spring Framework Hibernate Google Guice Hivemind Pico Proprietary Problem Solution Innovation ??? nity Community Commu k c Solution Feedba
    25. 25.  Spring Framework Hibernate Google Guice Hivemind Pico Proprietary Problem Solution Innovation ??? nity Community Commu k c Solution Feedba
    26. 26.  Spring Framework Hibernate Google Guice Hivemind Pico Standards based on Problem Community Innovation Solutions nity Community Commu k c Solution Feedba JAVA EE
    27. 27. Walk of Fame
    28. 28. Ease of Development & Flexibility
    29. 29. EoD:Convention over ...
    30. 30. Weniger ist mehr ...
    31. 31. EoD: Convention over ... @ManagedBean public class LoginBean { private String userName; private String passwordName; ... }
    32. 32. EoD: Convention over ... @ManagedBean(name=“loginBean“) @RequestScoped public class LoginBean { private String userName; private String passwordName; ... }
    33. 33. EoD: Convention over ... @Stateful public class ShoppingBean { private List<Items> items; public void addItem(Item item) {...}; ... }
    34. 34. EoD: Convention over ... @Stateful public class ShoppingBean implements ... { private List<Items> items; // Transactional by default public void addItem(Item item) {...}; ... }
    35. 35. EoD: Convention over ...@Stateless(name=“MyEjb“)@Local(MyInterface)@PermitAll@TransactionManagement(value= TransactionManagementType.CONTAINER)public class MyEjb implements MyInterface { @TranactionAttribute(value=REQUIRED) public void myBusinessMethid() { // some implementation } ...}
    36. 36. EoD: Convention over ...@Stateless(name=“MyEjb“)@Local(MyInterface)@PermitAll@TransactionManagement(value= TransactionManagementType.CONTAINER)public class MyEjb implements MyInterface { @TranactionAttribute(value=REQUIRED) public void myBusinessMethid() { // some implementation } ...}
    37. 37. <empty /> *)
    38. 38. <empty /> *) *) XML optional nutzbar
    39. 39. EoD: XML-less Deployment ... package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet implements HttpServlet { ... }
    40. 40. EoD: XML-less Deployment ... package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet implements HttpServlet { <!--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>
    41. 41. EoD: XML-less Deployment ... package de.openknowledge.shop @WebServlet(name=“ShopServlet“, urlPattern=“/doShopping“) public class ShoppingServlet implements HttpServlet { <!--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>
    42. 42. EoD:DependencyInjection
    43. 43. EoD: Dependency Injection ... @WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet implements HttpServlet { public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup( “jdbc/myDataSource“ ); ds.getConnection(); ... } }
    44. 44. EoD: Dependency Injection ... @WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet implements HttpServlet { public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup( “jdbc/myDataSource“ ); ds.getConnection(); ... } }
    45. 45. EoD: Dependency Injection ... @WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet implements HttpServlet { public void doGet() { DataSource ds = (DataSource)ServiceLocator.lookup( “jdbc/myDataSource“ ); ds.getConnection(); ... } }
    46. 46. EoD: Dependency Injection ... @WebServlet(urlPattern=“/doSomething“) public class ShoppingServlet implements HttpServlet { @Resource(“jdbc/myDataSource“) private DataSource ds; public void doGet() { ds.getConnection(); ... } ... }
    47. 47. EoD:Plain old Java Objects
    48. 48. EoD: Plain old Java Objects ...
    49. 49. EoD: Dependency Injection ... 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) {...}; ... }
    50. 50. EoD: Dependency Injection ... 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) {...}; ... }
    51. 51. EoD: Dependency Injection ... 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) {...}; ... }
    52. 52. Ease of Development & Flexibility
    53. 53. Flexibility: API Overloading
    54. 54. Different NeedsDifferent Profiles
    55. 55. Flexibility: Java EE Profiles
    56. 56. Flexibility: Java EE Profiles
    57. 57. Flexibility: Java EE Profiles
    58. 58. Flexibility: Java EE Profiles
    59. 59. Flexibility: EJB Lite Session Beans JPA 2.0 Local & None Interceptors Tx & Security
    60. 60. Flexibility: EJB Lite MDB Entity Beans Remote Web Services Timer & Async
    61. 61. Flexibility:Component Models
    62. 62. Enterprise JavaBeansFlexibility:Component Models
    63. 63. Enterprise JavaBeans Life Cycle Mmgt. Instance Pooling Concurrency Transaction Security Scoping ...Flexibility:Component Models
    64. 64. Flexibility:Component Models CDI Beans
    65. 65. Flexibility:Component Models CDI Beans Life Cycle Mmgt. Scoping ... AND ... *** Extensibility ***
    66. 66. Flexibility:Component Models CDI Konzepte
    67. 67. Flexibility:Component Models CDI Konzepte Typensicher DI (Stereotypes, Qulifier) Loose Koopelung (Events, Interceptors) Sichtbarkeiten (Sopes, LifeCycle ) „FACHLICHE INJECTION“
    68. 68. Java EE 7
    69. 69. Java EE 7„The Cloud Edition“
    70. 70. Java EE 7„The Cloud Edition“Easely operate on Clouds Latest Web Standards PaaS Support Multi-Tenancy Elasticity Modularity Versioning
    71. 71. ...
    72. 72. Java EE 7 ...
    73. 73. Java EE 7„The Cloud Edition“ ...
    74. 74. Java EE 7„The Cloud Edition“ Expression Language 3.0Java 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 ...
    75. 75. Java EE 7
    76. 76. Java EE 7„The Cloud Edition“
    77. 77. Java EE 7„The Cloud Edition“ „Ja“
    78. 78. Java EE 7„The Cloud Edition“ „Ja“ (a.k.a. Q3 / 2012)
    79. 79. StartUpgradeSwitch Java EE EE Ja va
    80. 80. Gibt es nochFragen?Dann los ...

    ×