Java & Components Timo Jalonen Lead Architect (SW) Enterprise Web Services - Finland Sun Client Solutions Email: Timo.Jalonen@sun.com
Aiheita Java yleistä Eri komponenttimallit (JEE 5.0) (SOA) 2
Yleistä 3
Java - maisema Java APIs JAINTM JMI JiniTM JXTA Java Programming Language Java WebStart Java Virtual Machine Shared Data Toolkit Java DMK OSS/J JavaSpacesTM 4
Virtuaalikone (J)VM = (Java) Virtual Machine Javalla kirjoitetut ohjelmat käännetään välikielelle Välikieli on kaikissa toteutuksissa sama Virtuaalikone on ajoympäristöön toteutettu ohjelma, joka suorittaa välikieltä 5
APIt Luokkakirjasto Joukko pakkauksia, joissa olevat luokat tarjoavat yleisimmän perustoiminnallisuuden Eri painoksissa eri kokoelma luokkia java.lang katsotaan kuuluvaksi kieleen > ei tarvitse erikseen ottaa mukaan käännökseen 6
Painokset Java Technology Enabled Devices Java Technology Enabled Desktop Workgroup Server High-End Server 7
Painosten erot Jokaiselle alustalle oma sopiva JVM ja APIt communicator server pager PDA J2EE Core APIs J2SE Core APIs J2ME Core APIs Java Language Java HotSpot Java Virtual Machine (JVM) KVM Card VM 8
JavaBeans Javan komponenttimalli Usein, muttei välttämättä, visuaalisia kompenentteja Perusominaisuudet: > Introspection - kehitysvälineet saavat selville > > > > komponentin ominaisuudet Customization - ominaisuuksia voidaan muuttaa suunnitteluvaiheessa Events - eventtipohjainen kommunikointi Properties - komponentin ominaisuudet näkyvät ja niitä voidaan muuttaa ajonaikaisesti Persistence - kustomoidut ominaisuudet voidaan säilyttää Yksinkertainen ohjelmointimalli 9
Appletit Selaimessa ajettavia Java-sovelluksia Periytyvät java.applet.applet-luokasta Applet-luokan määrittelemä rajapinta > Appletin kontrolloimiseen > Tarjoaa myös appletille mahdollisuuden saada tietoa ympäristöstään Sama luokka voi toimia sekä itsenäisenä sovelluksena, että applettina 10
Java 2 Micro Edition JavaOne 1999: KVM (Palm Pilot V) Vahvasti optimoitu runtime Kaksi virtuaalikonetta: KVM ja JVM Sama tavukoodisetti ja luokkaformaatti kuin J2SE:ssä 11
J2ME Konfiguraatiot (CDC ja CLDC) määrittelevät minimivaatimukset joita sovelluskehittäjä voi odottaa java-kirjastoilta ja virtuaalikoneelta tietyn konfiguraation laitteilta Profiilit lisäävät laiteryhmäkohtaisia ominaisuuksia tiettyyn konfiguraatioon Midlet Mobile Information Device Profile J2ME core APIs KVM DSP chip (esim. ARM) 12
J2ME komponentit = Midlet J2ME:n komponentit ovat midlettejä Erittäin analoginen Appletin kanssa, mutta ajoympäristönä ei ole selain, vaan esim. puhelin Ei kuitenkaan sovellusten koostamisen väline 13
J2ME Sovellusten lataus Sovelluksen Käyttäjä mainonta valitsee webbisivulla sovelluksen JAM lataa sovelluksen Web Page (Name, Version, Descriptor Size, File Network Transfer Java Application Manager ) Jar File 14
MSA Technical Approach MSA will: 1)Choose the base set of Component APIs that will be available on all next-generation JavaME devices. 2)Define clarifications that will define the proper behavior of the Component APIs 3)Define roadmap for the future versions of the platform. Guiding principles: > Reduce fragmentation. > Minimize optional features. > Focus on the needs of mass-market handsets. 15
MI18N (JSR 238) Payment API (JSR 229) Adv. media (JSR 234) WMA 2.0 (JSR 205) SVG (JSR 226) CHAPI (JSR 211) 3DGraphics (JSR 184) SIP (JSR 180) Location (JSR 179) SATSA (JSR 177) Web Services (JSR 172) MMAPI 1.1 (JSR 135) Bluetooth/Obex (JSR 82) PDAOP (JSR 75) MSA/CLDC 1.0 Platform J2ME MSA/CLDC Platform 1.0 (JSR 248) MIDP 2.0 (JSR 118) CLDC 1.1 (JSR 139) 16
MSA Status MSA/CLDC 1.0 Specification Public Review was completed in October 2005. Final Review and Final Release expected in spring 2006. Devices expected to ship in mid-to-late 2006. 17
MIDP3 Overview MIDP3 (JSR 271) will define a new version of the highly popular Mobile Information Device Profile standard. Main goals: > Maintain and enhance the role of MIDP as the > > > > leading mobile application environment. Add functionality requested by the developer community. Maintain backwards compatibility with MIDP 2.0. Maintain focus on high-volume mobile handsets. Reduce ambiguity & tighten specification in all areas. 18
MIDP3 Feature Highlights Multitasking (MVM) support: Shared libraries for MIDlets (LIBlets) UI enhancements Secure/Removable/Remote RMS stores Networking enhancements: Multiple network interfaces IPv6, VPN, IPSEC, MobileIP (to be decided) 19
MIDP3 Status MIDP3 is still in an early stage. > > > > Expert group work was started in May 2005. Use case analysis completed in Sep/Oct 2005. Requirements work is nearly complete. API design work started recently. Early Draft Review planned for Spring 2006. Public Review by JavaOne 2006 (?) Final Release by the end of year 2006. 20
J2EE ja sen komponenttimallit 21
Java 2 Enterprise Edition Laajojen hajautettujen sovellusten kehitykseen Joukko API-laajennoksia Sovelluskehitysmalli Referenssitoteutus Yhteensopivuustestit 22
J2EE-tuotteet Toisin kuin perusversiossa, Sun ei tarjoa valmista ympäristöä, vaan määrittelyt Viitetoteutus on toimiva ympäristö, mutta ei tarkoitettu tuotantokäyttöön Lukuisia kaupallisia ja avoimen lähdekoodin tuotteita saatavilla 23
J2EE Arkkitehtuuri Client-Side Presentation Server-Side Presentation Server-Side Business Logic EIS MIDP Devices XHTML/WML SOAP/HTTP JDBC EJB Servlet Rich Clients DBMS RMI/IIOP XML/HTTP Browsers HTML/XML B2B Application SOAP/HTTP J2CA JSP EJB CORBA Web Container EJB Container JMS J2EE Application Server ERP CMS SOAP 24
J2EE komponentit eri tasoilla 25
J2EE säiliöt ja komponentit Säiliöiden tehtävät Rinnakkaisuus Tietoturva Saatavuus Skaalatuvuus Pysyvyys Tapahtumat Elinkaari Hallinta Komponenttien tehtävät Esitys Liiketoimintalogiikka (Tietovarastoyhteydet) 26
J2EE komponentit Servlet JSP EJB 27
J2EE - Servlet WWW-palvelinkontekstissa ajettava ohjelma, joka ottaa vastaan pyyntöjä ja lähettää vastauksia Ohjelmoija toteuttaa minimissään muutaman yksinkertaisen funktion, joita palvelin osaa kutsua Tarjoaa myös ohjelmoijalle joukon luokkia helpottamaan tehtävää 28
J2EE - JavaServer Pages Tekstitiedosto (esim. HTML-sivu), johon kirjoitetaan laajennuselementtejä: > ohjelmakoodia > JSP-tagejä > Itse tehtyjä tageja Ajoympäristö kääntää sivusta Servletohjelman 29
J2EE - Enterprise JavaBeans Hajautettu komponenttimalli Kolme päätyyppiä: Session, Entity ja Message Driven > Session Bean voi olla tilallinen tai tilaton > Entity Bean voi hallita pysyvyytensä itse tai jättää sen säiliön huoleksi > Message Driven Beania kutsutaan kun sovelluspalvelin saa määritellyn viestin Transaktionaalisia 30
J2EE - EJB Komponenteilla on: > Home/LocalHome-rajapinta (luonti, haku, tuhoaminen) > Local/Remote-rajapinta (toiminnallisuus) > Toteutus > Käyttöönottokuvain 31
EJB Arkkitehtuuri 32
Muita J2EE-ominaisuuksia J2EE Connectors J2EE Deployment API J2EE Management Enterprise JavaBeans to CORBA Mapping Java API for XML Processing Java API for XML Registries Java API for XML-based RPC Java Naming and Directory Interface Java Message Service Java Transaction API / Java Transaction Service JavaMail API SOAP with Attachments API for Java... 33
Sovelluksen paketointi 34
J2EE sovellusten kokoamisprosessi Creation Assembly Deployment Created by J2EE Modules Component Developer Assembled and Augmented J2EE APP by Application Assembler Processed by Deployer Deploy J2EE Container Enterprise Components 35
JEE 5.0 36
Java EE 5 TM Introduction Theme: Ease of Development Simplified EJB models: EJB 3.0 Java Technology Object Persistence Extensive use of annotations: Common Annotations Web Services Annotations Java API for XML Binding (JAXB) 2.0: But also... Streaming API for XML (StaX) Asynchronous Web Services (JAX-WS 2.0) JavaServer Faces technology Updates to servlets, JavaServer Pages (JSP ), JavaMail APIs, etc. 37
The J2EE Challenge TM J2EE is enormously powerful > The industry standard for robust enterprise apps But that power sometimes gets in the way > Too difficult to get started > Even simple apps need boring boilerplate Can we keep the power, but make typical development tasks simpler? YES: and that is the focus of Java EE 5! 38
Java EE 5 Major Features TM Greatly simplified EJBTM development New persistence API Easy web applications with JavaServerTM Faces Simplified web services support More web service standards support 39
EJB 2.1 Very powerful, but complex to use > Too many classes, interfaces > Java Naming and Directory Interface > > > > > (JNDI) API lookups javax.ejb interfaces Awkward programming model Deployment descriptors Entity bean anti-patterns... 40
Ease of Development in EJB 3.0 Makes EJB technology easier to learn and use > > > > > > > > Extensive use of annotations Fewer classes and interfaces Dependency injection Simple lookups No required container interfaces No required deployment descriptor Simplified persistence Object/relational mapping Improves developer productivity > Designed to draw new developers to J2EE platform 41
Simplification of EJB Bean Types Elimination of requirement for EJB component interfaces > Business interfaces are plain Java interfaces Elimination of requirements for Home interfaces > Only need business interface, not home Elimination of requirements for javax.ejb.enterprisebean interfaces > Annotations for (optional) callbacks Elimination of need for use of JNDI API > Use dependency injection, simple lookup method 42
Simplified Client View Session beans have plain Java language business interface > No more EJB(Local)Home interface > No more EJB(Local)Object interface Bean class implements interface > Looks like normal Java class to bean developer Looks like normal Java language interface to client (POJI) 43
EJB 2.1 Bean Example public class PayrollBean implements javax.ejb.sessionbean { SessionContext ctx; DataSource empdb; public void setsessioncontext(sessioncontext ctx) { this.ctx = ctx; } public void ejbcreate() { Context initialcontext = new InitialContext(); empdb = (DataSource)initialContext.lookup( java:comp/env/jdbc/empdb ); } public void ejbactivate() {} public void ejbpassivate() {} public void ejbremove() {} public void setbenefitsdeduction (int empid, double deduction) { Connection conn = empdb.getconnection(); } } 44
EJB 2.1 DD Example <session> <ejb-name>payrollbean</ejb-name> <local-home>payrollhome</local-home> <local>payroll</local> <ejb-class>com.example.payrollbean</ejb-class> <session-type>stateless</session-type> <transaction-type>container</transaction-type> <resource-ref> <res-ref-name>jdbc/empdb</res-ref-name> <res-ref-type>javax.sql.datasource</res-ref-type> <res-auth>container</res-auth> </resource-ref> </session>... <assembly-descriptor>... </assembly-descriptor> 45
EJB 3.0 Example @Remote public interface Payroll { public void setbenefitsdeduction(int empid, double deduction); } @Stateless public class PayrollBean implements Payroll { @Resource DataSource empdb; public void setbenefitsdeduction(int empid, double deduction){ Connection conn = empdb.getconnection();... return; } } 46
EJB 2.1 Client Example... Context initialcontext = new InitialContext(); ShoppingCartHome mycarthome = (ShoppingCartHome)initialContext.lookup( java:comp/env/ejb/cart ); ShoppingCart mycart= mycarthome.create(); //Use the bean Collection widgets = mycart.starttoshop( widgets )... // Don't forget code to handle javax.ejb.createexception... 47
EJB 3.0 Client Example @EJB ShoppingCart mycart;... Collection widgets = mycart.starttoshop( widgets );... 48
Persistence Model in EJB 3.0 Entities are simple Java classes > Concrete classes support use of new > Getter/setter property methods or persistent instance variables > No required bean interfaces > No required callback interfaces Usable as detached objects in other application tiers > No more need for DTOs (Data Transfer Objects) 49
EntityManager EntityManager serves as untyped home for entity operations > Methods for lifecycle operations > Persist, remove, merge, flush, refresh, etc. > Similar in functionality to Hibernate Session, JDO PersistenceManager, etc. > Manages persistence context 50
JavaServer Faces (JSF) Framework Is A server side user interface (UI) component framework for Java technology-based web applications. Drag-and-drop UI components to build a web Application. 51
JSF Architecture Server JSF Page Desktop Browser HTML HTML RenderKit Front ctrl JSF Page App Backend WML RenderKit Phone WML 52
Java EE 5 Status TM All Specs available for review now Specs at Proposed Final Draft stage Q3 2005 Java EE 5 SDK Beta release Q4 2005 Java EE 5 Final release Q1 2006 53
SOA 54
What is SOA? (the obligatory definition slide) SOA is an architectural style that emphasizes loosely coupled, coarse-grained, shareable, secure, network based services to enable business flexibility in an interoperable technology agnostic manner. SOA is a business & technical strategy to expose business functionality & data within and between enterprises SOA is a design paradigm for the creation of applications via the orchestration of stateless services that interact through a variety of standards based interfaces SOA is an integrated software infrastructure and design approach based on best practices 55
Accidental Architecture? Silo Oriented Architecture Mature information systems grow old disgracefully as successive waves of hacking result in accidental architectures which resist the reflection of on-going business process change. - Anthony Lauder & Stuart Kent; University of Kent. (2000) Rigid Complex Expensive Slow to Market Monolithic Hard to Integrate 56
Promise of SOA Interoperability Federation Dynamic Discovery Loose Coupling Reuse and Composition Evolution, not Revolution Wrap and Reuse; Not Rip and Replace Standards based approach Alignment of Business and Technology 57
SOA Conceptual Model 58
Layering Principle Shared Network-based Layered Services Access Layer Process Layer Service Layer Resource Layer 59
Pragmatic SOA: What It Is Not SOA SOA SOA SOA SOA SOA Products Middleware Software Enterprise Service Bus Web Services... 60
SOA Big Rules Eye Chart Layered Modular & Autonomous Service Reuse Interoperable Coarse-Grained Business Services Composable Stateless XML Doc-Based Asynchronous Conversational Policy-Driven Described Orchestrated Loosely Coupled Versioned Self Healing Reliable Messaging Secure Choreographed Registered & Discovered 61
Composite Application Set of reusable services composed into a new application Consumes existing services Exposes new service interfaces Encapsulates business processes/collaboration Unit of deployment for services May or May not expose a user interface 62
The Move to Service Orientation Accidental Rigid Silo-Oriented Layered Extensible Service-Oriented 63
IT Silo Field Service Scheduling Order Processing Accounts Management Check Customer Status Check Customer Status Calculate Shipping Charges Determine Product Availability Determine Product Availability Order Status Verify Customer Credit Verify Customer Credit Monolithic Applications Order Status Data Repository Custom Marketing System AS400 Sales System Oracle CRM System SAP Finance System Red Prairie Warehouse Mgmt. System Another Business Unit External Trading Partner 64
IT Silo Field Service Scheduling Order Processing Check Customer Status Check Customer Status Determine Product Availability Determine Product Availability Verify Customer Credit Accounts Management Calculate Shipping Charges Order Status Verify Customer Credit Monolithic Applications Order Status Data Repository Custom Marketing System AS400 Sales System Oracle CRM System SAP Finance System Red Prairie Warehouse Mgmt. System Another Business Unit External Trading Partner 65
Reuse Services Via Re-composition Field Service Scheduling Check Customer Status Order Processing Check Credit Check Inventory Accounts Management Check Order Status Create Invoice Elemental Business Services Data Repository Custom Custom Marketing Marketing System System AS400 AS400 Sales Sales System System Oracle Oracle CRM CRM System System SAP SAP Finance Finance System System Red Red Prairie Prairie Warehouse Warehouse Mgmt. Mgmt. System System Another Another Business Business Unit Unit External External Trading Trading Partner Partner 66
Reuse Services Via Re-composition Field Service Scheduling Order Processing Accounts Management Check Customer Inventory Status Installation Scheduling Check Customer Status Process Customer Order Check Credit Check Inventory Bill Presentment/Payment Check Order Status Create Invoice Composed Business Processes Elemental Business Services Data Repository Custom Marketing System AS400 Sales System Oracle CRM System SAP Finance System Red Prairie Warehouse Mgmt. System Another Business Unit External Trading Partner 67
Field Service Scheduling Order Processing Accounts Management Composite Apps Business Processes Are Composed Hierarchically to Create Composite Applications Check Customer Status Check Credit Check Inventory Check Order Status Create Invoice Elemental Business Services Data Repository Custom Marketing System AS400 Sales System Oracle CRM System SAP Finance System Red Prairie Warehouse Mgmt. System Another Business Unit External Trading Partner 68