Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Bean Soup: Using Components With Java Alexander Day Chaffee [email protected] jGuru Training by the Magelang Institute Copyright © 1998 Alex Chaffee http://www.jguru.com/ Abstract "Component-based software design" is the hottest buzzword since "object-oriented programming." But what does it mean? What's a component? What's a JavaBean? An Enterprise JavaBean? What is COM and ActiveX? Can I use COM objects from Java? Can I use Java in an ASP? What about CORBA? Do components really help you reuse code and increase your team's productivity, or is it just another meaningless technology? In this section we pose these questions and more, and actually answer some of them. Copyright © 1998 Alex Chaffee Introduction jGuru Training by the Magelang Institute http://www.jguru.com/ Java Alex Training and Consulting Chaffee Creator of Gamelan Cool Java Dude Copyright © 1998 Alex Chaffee Overview Component Architectures Client-side components Java Beans Swing/JFC ActiveX Copyright © 1998 Alex Chaffee Overview (cont.) Server-side components Servlets Remote Method Invocation CORBA Objects Enterprise Java Beans Copyright © 1998 Alex Chaffee Components Copyright © 1998 Alex Chaffee What is an object? Encapsulation State + behavior Data + methods Polymorphism Inheritance Programming construct Buried inside a program An object may be reusable Copyright (c) 1997 Alex Chaffee What is a component? Software “part” Self-contained, independent Plug-and-play, drag-and-drop Interact and interoperate with other components Assemble components to create an application Ready for use by visual programming tools Marketable A component must be reusable Copyright (c) 1997 Alex Chaffee What a component is not an application Copyright (c) 1997 Alex Chaffee Some Standard Component Features Visual representation Persistent state Event / message passing Distributed (network-aware) Copyright (c) 1997 Alex Chaffee Law and Order Components must operate according to a set of rules APIs (interfaces) Naming conventions Message-passing model method invocation event model Copyright (c) 1997 Alex Chaffee The Architecture Dictates rules Provides common set of services Example architectures JavaBeans CORBA OLE / ActiveX OpenDoc EJB Copyright (c) 1997 Alex Chaffee Core Architecture Services creation registration discovery disposal Copyright (c) 1997 Alex Chaffee More Architecture Services visual representation visual tool integration persistence event passing and notification networking Copyright (c) 1997 Alex Chaffee Advanced services Security Licensing Scripting Introspection (meta) Transactions Naming Universal ID Version Management Install/uninstall Testing Copyright (c) 1997 Alex Chaffee Why Components? Quick and easy GUI design Solve “bloatware” Scriptable Lower barrier to entry for small software developers Easier to write, debug, mantain large applications Assemble targeted applications e.g. Word for Hospitals (cont.) Copyright (c) 1997 Alex Chaffee Why Components? (cont.) Document-centric computing Wrappers for legacy code Copyright © 1998 Alex Chaffee Java Beans Copyright © 1998 Alex Chaffee Why Java? Write once, run anywhere Well-designed event model and APIs Full-featured language Copyright (c) 1997 Alex Chaffee Goals 100% Pure Java Keep it simple Not necessarily visual Leverages Java platform Usable inside builder tools Copyright (c) 1997 Alex Chaffee What is a bean? “A Java Bean is a reusable software component that can be manipulated visually in a builder tool.” A Java class Any Java class that follows certain naming conventions Copyright (c) 1997 Alex Chaffee Example Bean class CoffeeBean implements Serializable { private double price; public CoffeeBean() { this(100);} public void setPrice(double price) { this.price = price; } public double getPrice() { return price; } } Note: no explicit “is a bean” syntax Copyright (c) 1997 Alex Chaffee Classes vs. Beans If any class can be a bean, what makes a class a bean? Properties Events Persistence Customization Naming conventions Copyright (c) 1997 Alex Chaffee Naming Conventions used to mark design patterns very important for JavaBeans simply by naming methods correctly, your class becomes a bean Not required, but strongly recommended can use BeanInfo class instead Copyright (c) 1997 Alex Chaffee Introspection metabean 1) low-level reflection (JDK1.1) 2) analyze wrt design patterns or, use BeanInfo Copyright (c) 1997 Alex Chaffee Properties Exposed data values Named attributes Accessor / mutator methods Design pattern: public void setColor(Color c) public Color getColor() Copyright (c) 1997 Alex Chaffee Methods Exposed public methods Design pattern: public void scratchAndSniff() Copyright (c) 1997 Alex Chaffee Events Methods called when something interesting happens Event source / event listener design pattern Design pattern: public void addSniffListener(SniffListener listener) public void removeSniffListener(SniffListener listener) Copyright (c) 1997 Alex Chaffee Design-time vs. Run-time Beans can run in two environments inside a BeanBox inside an application Different requirements Different overhead Copyright (c) 1997 Alex Chaffee Customization default UI for editing properties a bean can provide its own UI per property per entire bean property a sheet window that allows a user to edit beans Copyright (c) 1997 Alex Chaffee Persistence all beans must support either Serializable or Externalizable Copyright (c) 1997 Alex Chaffee Beans and Java 1.1 Beans rely on many features added to JDK 1.1 Realistically, you need a 1.1 VM JDK 1.1, JRE 1.1 (Sun) Microsoft IE4.0 Netscape Navigator 4.03 + patch Copyright (c) 1997 Alex Chaffee Applets vs. Beans Applets live in browsers, beans live in applications Beans need much more functionality Beans are more strict in their naming conventions You can make a class that is both an applet and a bean Copyright (c) 1997 Alex Chaffee Beans vs. ActiveX Beans have OO advantages of Java ActiveX controls have performance advantages and access to Win32 API Interoperable Sun’s Bean-ActiveX Bridge MS’s JVM transparently integrates the two Copyright (c) 1997 Alex Chaffee Limitations of JavaBeans Java-centric (pro and con) Copyright (c) 1997 Alex Chaffee Related Technologies ActiveX/OLE CORBA JavaIDL RMI JDBC Copyright (c) 1997 Alex Chaffee Bean Technology: Glasgow (JDK 1.2) Bean Contexts (aka “Runtime Containment and Services”) This provides a containment hierarchy for JavaBeans and provides ways for beans to find context-specific information such as design-mode versus run-mode. Native Drag-and-Drop support Copyright (c) 1997 Alex Chaffee Glasgow (cont.) JavaBeans Activation Framework (Standard Extension) Using beans to view different media types Identify media type (e.g. MPEG) Locate viewer for that type Copyright © 1998 Alex Chaffee Bean Technology: InfoBus enables dynamic exchange of data between JavaBeans components protocols based on a notion of an information bus based on Lotus’ InfoBus technology only works inside a single VM Copyright (c) 1997 Alex Chaffee Demo Copyright (c) 1997 Alex Chaffee Some cool beans HotJava HTML Bean Renderer DoqView Word/Excel/Powerpoint viewers Alphaworks image filters, POP3/SMTP/FTP protocols, spinners, progress bars, XML parsers Copyright (c) 1997 Alex Chaffee Bean Builders (IDEs) BeanBox (Sun) Visual Café (Symantec) VisualAge for Java (IBM) JBuilder (Borland) Cosmo Code (SGI) Super Mojo (Penumbra)* (R.I.P.) * written in 100% Pure Java Copyright (c) 1997 Alex Chaffee JFC and Swing JFC = Swing + Java2D + Drag-anddrop + a few other things Swing = New GUI widget set All Swing widgets are JavaBeans Standard (core) with JDK 1.2 release Copyright © 1998 Alex Chaffee Basic Widgets JButton JLabel JPanel JMenu JFrame (window) Copyright © 1998 Alex Chaffee JTree and JTable JTable spreadsheet-like JTree hierarchical display Copyright © 1998 Alex Chaffee JEditorPane Full HTML renderer component Copyright © 1998 Alex Chaffee ActiveX and COM Integration Copyright © 1998 Alex Chaffee Definitions COM ActiveX DCOM Copyright © 1998 Alex Chaffee COM Interfaces Base: IUnknown Copyright © 1998 Alex Chaffee The Registry Mongo database Register all COM objects Can also register Java objects as COM objects JavaReg /register /class:com.foo.Tommy /progid:Tommy Copyright © 1998 Alex Chaffee COM Integration with the Microsoft VM Transparent integration COM objects are accessible from Java as Java objects Note: huge security hole Java objects are accessible from COM as COM objects Must register using JavaReg Copyright © 1998 Alex Chaffee COM Integration with the Sun VM Need to use “ActiveX Bridge” Straightforward but not as seamless Copyright © 1998 Alex Chaffee Server-side components Servlets CORBA EJB Copyright © 1998 Alex Chaffee Servlets Copyright © 1998 Alex Chaffee What Is A Servlet A Java object Plug-in for a web server Replacement for CGI scripts Can also be used to extend server as a plug-in Full power of Java Platform-independent Database access Fun to write Copyright © 1998 Alex Chaffee Server/Service/Servlet server - a process running on a host machine Apache, service - a protocol running on a port HTTP, servlet Java Web Server FTP - a module running inside a service PhoneServlet Copyright © 1998 Alex Chaffee Servlets vs. Applets Servlets have no GUI Server-side, not client-side Different security model Installed, not downloaded But you can download remote servlets too Consistent Much server-side VM easier to test Copyright © 1998 Alex Chaffee Servlets vs. CGI "performance, flexibility, portability, and security" (whitepaper) Faster and Leaner No fork-process like Perl No need to initialize for each request Only lightweight thread context switching Built-in multithreading Copyright © 1998 Alex Chaffee Servlets vs. CGI (Cont.) Easy to manage state share data across successive requests share data between concurrent requests use hidden fields, cookies, or sessions Write once, run anywhere It's easy to write unportable Perl Servlets have standard API Supports GET, all methods POST, PUT, DELETE, et al. Copyright © 1998 Alex Chaffee Servlets vs. FastCGI FastCGI sends multiple requests to a single separate process requires process context switch Servlets send multiple requests to multiple threads in same process requires lightweight thread context switch (Also applies to ISAPI) Nice diagram in White Paper Servlets also automatically take advantage of multiprocessors Copyright © 1998 Alex Chaffee Supported Servers Java Web Server Apache Netscape Many others (see web site) Servlet Engines IBM's ServletExpress Live Software’s JRun Copyright © 1998 Alex Chaffee Servlet Security Trusted Servlets (full access) JWS Internal Local (in the "servlets" directory) Servlet Sandbox Signed Network Servlets (full access) Unsigned Network Servlets (limited access) Copyright © 1998 Alex Chaffee Servlet Security: Implications IT managers can sign servlets for use in their organization ISPs can allow users to run servlets less of a security hole than CGI scripts, since Java is safe and secure (at least more so than C or Perl) still allows denial-of-service attacks Network servlets are possible chaining / proxying allows agents common servlet repository servers for multiple Copyright © 1998 Alex Chaffee Servlet Security: Problems Too simplistic All or nothing Should They Should allow ACLs for particular signers claim it will in a future version get better with 1.2 security model Finer-grained access control Copyright © 1998 Alex Chaffee Servlet Client Security Java Web Server Allows Access Control Lists for clients Supports HTTP authentication Supports Digest Authentication Other Web Servers Usually support HTTP authentication May have other security features Copyright © 1998 Alex Chaffee API Availability Standard Java Extension API From white paper: "This means that while it is not part of the core Java framework which must always be part of all products bearing the Java brand, it will be made available with such products by their vendors as an add-on package." package javax.servlet.*, javax.servlet.http.* Copyright © 1998 Alex Chaffee Servlet Architectures:Three-tier system Tier 1: Client HTML browser Java client Tier 2: Servlets embody business logic secure, robust Tier 3: Data Sources Java can talk to SQL, CORBA, OODB, File system, etc. etc. Copyright © 1998 Alex Chaffee Servlet Architectures: N-tier system Tier 1: HTML Browser Tier 2: Servlet User Tier interface 3: EJB/CORBA/RMI Objects Business Tier logic 4: Other Servers (e.g. RDBMS) Data storage Copyright © 1998 Alex Chaffee Servlet Architectures: Web Publishing SSI Servlets JSP Servlets Best to keep business logic inside Java objects Keep the JSP light so designers don’t get scared Chaining servlets Multiple servers data gathering, collecting, serving, load Copyright © 1998 Alex Chaffee balancing, etc. Server-side Includes (SSI) Must can be in a file named .shtml or .jsp change this with Admin Tool Normal SSI <!--#include Servlet file="foo.txt" --> SSI <servlet code=DateServlet.class> </servlet> Copyright © 1998 Alex Chaffee SSI Details pass init parameters in servlet tag pass servlet parameters in param tags can specify codebase in servlet tag e.g. <servlet code=DateServlet.class codebase=http://servlets.foo.com/ initParam1=val1 initParam2=val2> <param name=serviceParam1 value=val3> <param name=serviceParam2 value=val4> </servlet> Copyright © 1998 Alex Chaffee URL invocation Directly from browser as URL http://www.myserver.com/servlet/MyServlet From inside FORM tag as script From inside JHTML or JSP page <FORM METHOD=POST ACTION=”/servlet/MyServlet”> ... </FORM> Uses “Page Compilation” Compiles the jsp file into a servlet on the fly, then executes it Copyright © 1998 Alex Chaffee Page Compilation (JSP) Embed Java code in static HTML pages then compile those pages into individual Java servlets to create a dynamic web site Based on JHTML technology from Art Technology Group (http://www.atg.com/) Product: Dynamo, a Java Web Application Server Copyright © 1998 Alex Chaffee HelloHttpServlet public class HelloHttpServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { String name = req.getParameter("name"); if (name == null) name = "Joe"; res.setContentType("text/plain"); ServletOutputStream out = res.getOutputStream(); out.println("Hello, " + name + "!"); } } Copyright © 1998 Alex Chaffee Saving State: Why Shopping Cart User Preferences “Wizard” interfaces i.e., successive linked dialog boxes / form entry pages Copyright © 1998 Alex Chaffee Saving State: How Client-side storage Hidden fields URL Rewriting Cookies Server-side storage Instance variables Database Access JWS Session Management Best possible solution (but still flawed) Copyright © 1998 Alex Chaffee Remote Method Invocation (RMI) Copyright © 1998 Alex Chaffee What Is RMI? Access to Remote Objects Java-to-Java only Client-Server Protocol High-level API Transparent Lightweight Copyright © 1997 Alex Chaffee Remote Objects (Diagram) Java Virtual Machine Java Virtual Machine Client Object Remote Object TCP Copyright © 1997 Alex Chaffee RMI Layers Java Virtual Machine Java Virtual Machine Client Object Remote Object Stub Skeleton Remote Reference Layer Remote Reference Layer Transport Layer TCP Transport Layer Copyright © 1997 Alex Chaffee Stubs and Skeletons Stub lives on client pretends to be remote object Skeleton lives on server receives requests from stub talks to true remote object delivers response to stub Copyright © 1997 Alex Chaffee Remote Interfaces and Stubs Remote Interface implements Client Stub implements Skeleton Remote Object (Server) Copyright © 1997 Alex Chaffee Creating Remote Objects Define a Remote Interface extends java.rmi.Remote Define a class that implements the Remote Interface extends java.rmi.RemoteObject or java.rmi.UnicastRemoteObject Copyright © 1997 Alex Chaffee CORBA Objects Copyright © 1998 Alex Chaffee What is CORBA? Common Object Request Broker Architecture Communication infrastructure for distributed objects Allows a heterogeneous, distributed collection of objects to collaborate transparently Copyright © 1998 Alex Chaffee What is CORBA good for? Developing distributed applications Locating remote objects on a network Sending messages to those objects Common interface for transactions, security, etc. CORBA Services (more later) Copyright © 1998 Alex Chaffee What is the OMG? Designers of CORBA Consortium of 700+ companies Not including Microsoft Members: platform vendors database software tool developers corporate software vendors developers application vendors Copyright © 1998 Alex Chaffee Basic CORBA Architecture Server Client response request ORB ORB “Object Bus” Copyright © 1998 Alex Chaffee CORBA Objects Examples Service Client Component Business object CORBA objects approach universal accessibility Any Language Any Host on network Any Platform Copyright © 1998 Alex Chaffee ORB Object Request Broker “Object Handles Bus” all communication among objects Each host (machine) has its own ORB ORBs know how to talk to each other ORB also provides basic services to client Copyright © 1998 Alex Chaffee ORB Responsibilities Find the object implementation for the request Prepare the object implementation to receive the request Communicate the data making up the request Retrieve results of request Copyright © 1998 Alex Chaffee Network of ORBs There’s an ORB on the server too ORB receives request Copyright © 1998 Alex Chaffee IIOP Internet Inter-Orb Protocol Network or “wire” protocol Works across TCP/IP (the Internet protocol) Copyright © 1998 Alex Chaffee Stubs and Skeletons Stub lives on client pretends to be remote object Skeleton lives on server receives requests from stub talks to true remote object delivers response to stub Copyright © 1997 Alex Chaffee Stubs and Skeletons (Fig.) Client Host Machine Server Host Machine Client Object Remote Object Stub Skeleton ORB IIOP ORB Copyright © 1997 Alex Chaffee Client vs. Server in CORBA, a client is a client relative to a particular object i.e. an object with a reference to a “server” object A client may also act as a server If it has an IDL and stubs and skeletons Technically, a CORBA server contains one or more CORBA objects Copyright © 1998 Alex Chaffee The Java ORB 100% Java Generic Allows Java IDL applications to run either as stand-alone Java applications, or as applets within Java-enabled browsers Uses IIOP Copyright © 1998 Alex Chaffee RMI over IIOP In Development Uses IIOP as transport protocol Uses Value Objects to pass Java serialized objects Copyright © 1998 Alex Chaffee CORBA via RMI Possible using middleware server RMI from client to middleware IIOP from middleware to other servers Can use Servlet as middleware Copyright © 1998 Alex Chaffee Enterprise Java Beans Copyright © 1998 Alex Chaffee What is an EJB NOT a JavaBean Server-side business component Transactional Distributed Secure Platform-independent Vendor -independent Copyright © 1998 Alex Chaffee The EJB Spec Defines the role of an EJB server Levels the playing field Removes Created competitive “lock-in” advantage by many competitors Testament to power of having a common enemy Allows EJBs to run in many different vendors’ products Copyright © 1998 Alex Chaffee Distributed Transactions One transaction Many operations Many servers Many databases Distributed two-phase commit Copyright © 1998 Alex Chaffee Two Types of Enterprise Beans Session Bean Represents a particular client during a single session Entity Bean Represents a data object E.g. a row in a table Often, a session bean will invoke one or more entity beans Copyright © 1998 Alex Chaffee EJB Containers Implement services used by EJBs Specialized containers Extend EJB spec 110% Pure Copyright © 1998 Alex Chaffee CORBA and EJB Transport EJB uses RMI interface, RMI uses IIOP CORBA 3.0 promises object compatibility with EJB Not quite sure what that means Some All EJB Servers contain an ORB EJB Objects are also CORBA objects Copyright © 1998 Alex Chaffee CORBA and EJB (Cont.) All EJB Servers use CORBA Transactions (via JTS) That means that any client can make a distributed transaction that includes both CORBA and EJB Objects Not an either-or decision You can have both EJB and CORBA working together in a single system Copyright © 1998 Alex Chaffee Java Transactions Java Transaction Service (JTS) A standard Java mapping of the OMG Object Transaction Service (OTS) packages org.omg.CosTransaction and org.omg.CosTSPortability Java Transaction API (JTA) High-level transaction management specification package javax.transaction Copyright © 1998 Alex Chaffee Object Transaction Service (OTS) Distributed Part transaction specification of CORBA, but also standalone Transactions can span multiple queries multiple objects multiple servers multiple databases multiple vendors’ products Copyright © 1998 Alex Chaffee OTS Features Distributed Flat transactions or nested transactions Nested not supported in Java Two-phase Vendor commit interoperability (?) Copyright © 1998 Alex Chaffee EJB + Servlets A great architecture Wider platform for clients HTML runs on most clients, even without Java Secure No need to put password on client Fast Data access happens inside your LAN Copyright © 1998 Alex Chaffee Conclusion Copyright © 1998 Alex Chaffee Credits Thanks to Christof Sieberath (@swisscom.com) for may/must distinction Copyright © 1998 Alex Chaffee Where to Get More Information: Web sites http://www.Developer.com/ (Gamelan) http://www.JavaWorld.com/ (magazine) http://www.Purpletech.com/ (author’s site) http://www.alphaworks.ibm.com/alphaBeans Copyright © 1998 Alex Chaffee