a8addb7297bab6bdc28510235bd74006.ppt
- Количество слайдов: 79
OOP : Programming in Java. Bean & Other Topics 蔡文能 交通大學資訊 程學系 tsaiwn@csie. nctu. edu. tw http: //www. csie. nctu. edu. tw/~tsaiwn/java/ 交通大學資訊 程學系
Java. Bean Agenda Java Reflection Java Bean Java JDBC J 2 ME Java cipher utility class/function Java Server side - JSP (Java Server Page) - Java Servlet - J 2 EE: EJB, JMS, JCA, JNDI, JTA, JAXP, JAAS, +CORBA Tomcat: Servlet container JBoss Application Server Java Application Framework (e. g. , Struts, Spring) 交通大學資訊 程學系 蔡文能 10 -第 2頁
Java. Bean Java Reflection Package java. lang. reflect; Java reflection make dynamic checking possible What is Java Reflection? - 顧名思義, Java reflection 就是可以自己知道自己是啥, 有如照鏡子! - 這是指 Java 程式在執行時期(Run time). . 可以知道各變數的細節,可 以動態檢查 (Dynamic checking)各變數與各類別的一些屬性! - 可以先用 get. Class( ) 再用Class內的get. Name( )取得物件所屬 class 的名 稱; 透過該 Class 物件, 我們可以查知該類別隸屬於那個Package、類別 本身究竟是Public還是Private、繼承自那一類別、實作了那些介面等。 - 甚至我們可以查知它究竟有哪些成員變數(欄位)以及哪些成員函數( 包括建構子)。 - 我們可以查知物件是不是array? 若是 array 則可用 get. Component. Type( ) 取得其元素的 type (也是 Class 物件); 接著可用java. lang. Class 內的 is. Primitive( )看看其元素是否為原始型別,若不是原始型別可再看看 該物件是否為 Array ? 交通大學資訊 程學系 蔡文能 10 -第 3頁
Java. Bean Tips to Java Reflection Java 寫的任何 class 都是直接或間接 extends Object 所有的物件(Object) 都可以叫用 get. Class( ) 取得其類別; 此時取得的物件 是一個 java. lang. Class 物件 這叫Class 的類別裡面有很多函數可以用, 例如 is. Array( ), is. Interface( ), is. Primitive( ), get. Name( ) 等等. . java. lang. reflect. Array 內也有許多好用的 static 函數, 例如 Array. get. Length(array Object), get( )可取得array某元素 可用 Class. for. Name(“Stack”) 生出 Stack 的 Class 物件, 再用該 Class 物件. new. Instance( ); 就可生出 Stack 物件; 此處的 “Stack” 可換成任何 class name; 就是說可以依使用者輸入動態地決定要產生何類別的物件。 java. lang. reflect. Constructor 可用來取得 Constructor 以便執行 有了 reflection, 程式碼在撰寫時就不必將行為寫死,包括要處理的類別、 要存取的成員變數、要呼叫的成員函數等,都可動態決定。 交通大學資訊 程學系 蔡文能 10 -第 4頁
Java. Bean Definitions Tier mean a physical tier defined by a physical server, or a group of physical servers that perform the same function as each other but exist to extend capacity. Client stand alone program is one tier. Layer mean a section of the system that is contained within its own process or deployment unit. Multiple layers may co exist on one tier, but can easily be moved to another tier if some sort of remoting capabilities are used. Database are designed to store, retrieve, and update data as quickly and efficiently as possible. Business Logic A workflow or procedure that defines the way a company conducts business. 交通大學資訊 程學系 蔡文能 10 -第 5頁
Java 2 -Tier Database Access Java. Bean Client Tier – Presentation, Business Logic Data Tier – Database Management Services Source: Sun Microsystems, Inc. , JDBC 3. 0 Specification 交通大學資訊 程學系 蔡文能 10 -第 6頁
Java. Bean Traditional(non-component) N-Tier Systems Client Tier – Presentation Logic Application Tier – Business Logic Data Tier – Database Management Services 交通大學資訊 程學系 蔡文能 Source: Sun Microsystems, Inc. , JDBC 3. 0 Specification 10 -第 7頁
Java. Bean Component N-Tier Systems J 2 EE Architecture Client Tier Fireware Applet Container Web Tier Web Container Connector EJB Container JSP Standalone Client Machine EIS Tier Business Tier EJB Servlet Enterprise Information Services J 2 EE Server Machine Database Server Machine 交通大學資訊 程學系 蔡文能 10 -第 8頁
EE 448: Server-Side Development Java. Bean 2 -Tier vs 3 -Tier Architecture 交通大學資訊 程學系 蔡文能 10 -第 9頁
Java. Bean J 2 ME Technologies - Personal Profile Personal Basis Profile Java Card. TM Technology Java Embedded Server. TM Technology Java. Phone. TM API Java Telematics Technology (JTT) Java TVTM API J 2 ME Wireless Toolkit Personal. Java. TM Technology Wireless Developer web site Connected Limited Device Configuration (CLDC) Mobile Information Device Profile (MIDP) Connected Device Configuration (CDC) Foundation Profile 交通大學資訊 程學系 蔡文能 10 -第 10頁
The Evolution of Server Java. Bean Side Web Ap Developement CGI (Common Gateway Interface) in any language Java Servlet JSP (, ASP, PHP) JSP + Java. Bean (Model 1) JSP + Java. Bean + XML Model 2 (MVC) Model 2 X(MVC with XML techs) Application Framework 交通大學資訊 程學系 蔡文能 10 -第 11頁
Java. Bean MVC Design Pattern The Model View Controller is a technique used to separate Business logic/state (the Model) from User Interface (the View) and program progression/flow (the Control). This pattern is very useful when it comes to modern web development: - The majority of modern, high usage websites are dynamically driven. - People well skilled at presentation (HTML writers) seldom know how to develop back-end solutions and visa versa. - Separating business rules from presentation is good no matter what environment you develop in be it web or desktop. MVC 使得美 人員與程式人員的分 合作更為容易 資料來源 Craig W. Tataryn , Introduction to MVC and the Jakarta Struts Framework 交通大學資訊 程學系 蔡文能 10 -第 12頁
Java JSP Introduction Java. Bean Basic idea: Turn Code and HTML inside out - Use regular HTML for most of page - Mark servlet code with special tags - Entire JSP page gets translated into a servlet (once), and servlet is what actually gets invoked (for each request) JSP embeds Java or processing tags inside HTML. <HTML> <BODY> <H 2>Welcome <%= request. get. Parameter("username") %>. </H 2> <P>Current time: <%= new java. util. Date() %></P> </BODY> </HTML> - No more out. println(“<html><b>Hello</b></html>”); - Lets web designers focus on static HTML page design, and developers on dynamic Java content. (美 與程式分 ) Automatic compilation - A compiled JSP is actually a servlet, with the same service() method and threaded behavior. 交通大學資訊 程學系 蔡文能 10 -第 13頁
JSP Scripting Elements Java Declarations Java. Bean <%! variables or methods %> <%! private int m_i. Access. Count = 0; %> Scriptlets <% Java code %> <% String str. User. Name = request. get. Parameter(“username”); String str. Password = request. get. Parameter(“password”); %> Expressions <%= Java expressions %> <p>Welcome <%= str. User. Name %> </p> <p>The current time is <%= new java. util. Date() %> </p> 交通大學資訊 程學系 蔡文能 10 -第 14頁
Java JSP Life Cycle Java. Bean JSPs are compiled initially by the web container (Translation Phase) JSPs are then used by the container to service requests (Request Processing Phase) Client can NOT view the original JSP code. 交通大學資訊 程學系 蔡文能 10 -第 15頁
Java Predefined JSP Objects Java. Bean request – Http. Servlet. Request - Determine request parameters from either GET/POST response – Http. Servlet. Response - Set response content type and cookies out – Print. Writer - Send buffered HTML output back to the browser session – Http. Session associated with the request application – Servlet. Context available to all servlets and JSP pages 交通大學資訊 程學系 蔡文能 10 -第 16頁
Java JSP “page” Directives Java. Bean Importing classes (Http. Servlet and I/O classes are automatically imported): <%@ page import="javax. xml. *, com. mypackage. *" %> Setting content type: <%@ page content. Type="text/html" %> (default) <%@ page content. Type="text/xml" %> Turning sessions on/off for this page: <%@ page session="true" %> (default) <%@ page session= "false" %> 交通大學資訊 程學系 蔡文能 10 -第 17頁
Java JSP “include” Directive/Tag Java. Bean Directive: includes the file at page compilation time <%@ include file="Toolbar. jsp" %> - Includes the actual file itself, before the JSP has been converted to a servlet. - Changes to an included file are not picked up by its parent page, until the parent page changes. Tag: includes the file at request time <jsp: include page="footer. html" /> - Server runs the included page and inserts its output at request time, and does this for each request. - Requires runtime processing – slower for dynamic include files. - Changes to included files are automatically picked up at request time, even if the parent file did not change. 交通大學資訊 程學系 蔡文能 10 -第 18頁
Java Using Java. Beans with JSP Java. Bean Identify the Java. Bean and its scope. <jsp: use. Bean id="Account" class="cis. Account. Bean" scope="request" /> Read Java. Bean properties, or method return values <jsp: get. Property name="Account" property="user. Name" /> Set Java. Bean properties directly <jsp: set. Property name="Account" property="user. Name" value="Greg" /> Set Java. Bean properties using request input parameters <jsp: set. Property name="Account" property="user. Name" /> Populate all Java. Bean properties with input parameters <jsp: set. Property name="Account" property="*" /> 交通大學資訊 程學系 蔡文能 10 -第 19頁
Java Using Java. Beans with Servlets Java. Bean Create the Java. Bean. Import the Java. Bean so it’s visible to the servlet. import ggyy. Haha. Bean; Load the Java. Bean and set its properties. Haha. Bean obj. Account = new Haha. Bean(); obj. Account. set. User. Name(str. User. Name); obj. Account. set. Password(str. Password); Store the Java. Bean in the request (or session) so it can be used by other web components. request. set. Attribute("Account", obj. Account); Request. Dispatcher req. Dispatcher = get. Servlet. Context(). get. Request. Dispatcher("/Login. jsp"); req. Dispatcher. forward(request, response); 交通大學資訊 程學系 蔡文能 10 -第 20頁
Java Design Patterns: Model 1 Java. Bean Single Servlet or JSP page is responsible for - processing the request - performing business logic and/or database access - building HTML output Fine for simple applications, But. . Doesn't cut it for enterprise applications - Hard to scale without significant rewrite. - Hard to maintain or enhance, especially if the display or business logic changes frequently. - Hard to separate development tasks. 交通大學資訊 程學系 蔡文能 10 -第 21頁
Java Design Patterns: Model 2 (MVC) Java. Beans handle business logic (model). JSPs get data from Java. Beans and build HTML (view). Servlets process the request (controller). MVC 使得美 人員與程式人員的分 合作更為容易 交通大學資訊 程學系 蔡文能 10 -第 22頁
Java Model 2 Architecture (M) Java. Bean (model): - Move business logic from servlet or JSP page into a Java. Bean. - Create public get and set methods that correspond to each expected request parameter (e. g. get. User. Name() and set. User. Name(String User. Name)). - Create methods that handle business logic, such as querying the database to get an account balance. MVC 使得美 人員與程式人員的分 合作更為容易 交通大學資訊 程學系 蔡文能 10 -第 23頁
Java Model 2 Architecture (V) Java. Bean JSP (view): - Get the Java. Bean from the request. <jsp: use. Bean id=“Account” scope=“request” class=“cis. Account. Bean”/> - Insert the Java. Bean’s properties as dynamic values within static HTML template text. <H 2>Welcome <jsp: get. Property name=“Account” property=“user. Name”/> </H 2> MVC 使得美 人員與程式人員的分 合作更為容易 交通大學資訊 程學系 蔡文能 10 -第 24頁
Java Model 2 Architecture (C) Java. Bean Servlet (controller): - Get each request parameter. - Load the Java. Bean and set its properties by calling the appropriate methods – set. User. Name(), set. . . () - Store the Java. Bean as an attribute of the request. set. Attribute("Account", obj. Account); - Forward the request to a JSP page for display. Request. Dispatcher req. Dispatcher = get. Servlet. Context(). get. Request. Dispatcher("/Login. jsp"); req. Dispatcher. forward(request, response); MVC 使得美 人員與程式人員的分 合作更為容易 交通大學資訊 程學系 蔡文能 10 -第 25頁
JSP vs. ? ? ? Java. Bean Versus ASP or Cold. Fusion - Better language for dynamic part - Portable to multiple servers and operating systems Versus PHP - Better language for dynamic part - Better tool support Versus Web. Macro or Velocity - Standard Versus pure servlets - More convenient to create HTML Can use standard tools (e. g. , Home. Site) Divide and conquer JSP developers still need to know servlet programming 交通大學資訊 程學系 蔡文能 10 -第 26頁
Correspondence between JSP and Servlet Java. Bean Original JSP <H 1>A Random Number</H 1> <%= Math. random( ) %> Possible resulting servlet code public void _jsp. Service(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { request. set. Content. Type("text/html"); Http. Session session = request. get. Session(true); Jsp. Writer out = response. get. Writer(); out. println("<H 1>A Random Number</H 1>"); out. println(Math. random( )); //. . . } 交通大學資訊 程學系 蔡文能 10 -第 27頁
Java. Bean at a glance A Java. Bean is nothing more than a class that maintains some state data (called properties) and follows a certain set of coding conventions. Java. Beans can be easily added to and maintained by most of the Java GUI Development Tools along with certain Java runtime support (reflection and introspection) 交通大學資訊 程學系 蔡文能 10 -第 28頁
Java. Bean So, What are Java. Beans ? A reusable software component written in Java that can be manipulated visually in a ‘builder tool’. (from Java. Bean Specification) The Java. Beans API (java. beans. *) provides a framework for defining reusable, embeddable, modular software components. Builder Tools allow connection and configuration of Beans Begins ‘Age of Component Developer’ Bringing Engineering methods to Software Engineering (e. g. electronic components (e. g. , IC), …) 交通大學資訊 程學系 蔡文能 10 -第 29頁
Java. Beans vs. Class Libraries Beans are appropriate for software components that can be visually manipulated Class libraries are good for providing functionality that is useful to programmers, and doesn’t benefit from visual manipulation 交通大學資訊 程學系 蔡文能 10 -第 30頁
Java. Beans Concepts (1/2) A component is a self-contained reusable software unit Components expose their features (public methods and events) to builder tools Can be a Graphic bean or a Non-graphic bean A builder tool maintains Beans in a palette or toolbox. You can select a bean from the toolbox, drop it in a form, and modify its appearance and behavior. Also, you can define its interaction with other beans ALL these without a line of code. Microsoft Visual Control 交通大學資訊 程學系 蔡文能 10 -第 31頁
Java. Beans Concepts (2/2) A bean may or may not inherit from any other class or interface. If you wish to save and restore the state of the bean object, implement the java. io. Serializable interface. Graphical (Visible) beans must inherit from java. awt. Canvas or java. awt. Component so that they can be added to visual containers. 交通大學資訊 程學系 蔡文能 10 -第 32頁
Java. Bean Introspection (自我反省) Defines techniques so components can expose internal structure at design time by inspecting the. class file Allows development tools to query a component to determine member variables, member methods, and interfaces Standard naming conventions used java. beans. Introspector. class - Based on java. lang. reflect. * - can be done by providing a java. beans. Bean. Info with the bean to describe the public methods and properties 交通大學資訊 程學系 蔡文能 10 -第 33頁
Java. Bean Naming Conventions (1/2) Beans - Class name: any name you like - Constructor: no argument or serialized template file - Packaging: jar file with Java-Bean: True Properties - getter and setter methods must follow some rules -design patterns: get. XXX( ), set. XXX(new. Value); - E. g. , Property name: message public String get. Message( ) Public void set. Message(String s) 交通大學資訊 程學系 蔡文能 10 -第 34頁
Java. Bean Naming Conventions (2/2) Events - Event name: Answer Class name: Answer. Event Listener name: Answer. Listener methods: - public void methodname(Answer. Event e) - public void add. Answer. Listener(Answer. Listener l) - public void remove. Answer. Listener(… l) 交通大學資訊 程學系 蔡文能 10 -第 35頁
Java. Bean Javabean for JSP Benefits of jsp: use. Bean - Hides the Java syntax - Makes it easier to associate request parameters with Java objects (bean properties) - Simplifies sharing objects among multiple requests or servlets/JSPs jsp: use. Bean - Creates or accesses a bean jsp: get. Property - Puts bean property (i. e. get. Xxx call) into Servlet output jsp: set. Property - Sets bean property (i. e. passes value to set. Xxx) To use Java. Beans with JSP no environmental support is needed 交通大學資訊 程學系 蔡文能 10 -第 36頁
Java. Bean A Bean Example package ggyy; // 一定要放某 package public class Haha. Bean { private String level = "median"; private String good. Thing = "Row Beaf"; public String get. Level( ) { return(level); } public void set. Level(String new. Level) { level = new. Level; } public String get. Good. Thing() { return(goes. With); } public void set. Good. Thing(String what) { good. Thing = what; } } // class 交通大學資訊 程學系 蔡文能 10 -第 37頁
Java. Bean An Example of JSP uses the bean <BODY> <H 1>Baked Bean Values: application-based Sharing</H 1> <jsp: use. Bean id="application. Bean" class="ggyy. Haha. Bean" scope="application" /> <jsp: set. Property name="application. Bean" property="*" /> <H 2>Bean level: <jsp: get. Property name="application. Bean" property="level" /> </H 2> <H 2>Haha bean now has: <jsp: get. Property name="application. Bean" property="good. Thing"/> </H 2></BODY></HTML> 交通大學資訊 程學系 蔡文能 10 -第 38頁
Java. Bean Visually Manipulated, Builder Tools Tool. Box Bean. Box Property Sheet Method Tracer 交通大學資訊 程學系 蔡文能 10 -第 39頁
Java. Bean Characteristics a public class with 0 -argument constuctor it has properties with accessory methods - get. XXX( ); // getter - set. XXX(para); // setter it has events. It may register and receive events from other object and can generate event sent to other objects it can customized its state can be saved it can be analyzed by a builder tool Javabean for business logic process in MVC on server javabean on server is not visible Client side javabean can be visible 交通大學資訊 程學系 蔡文能 10 -第 40頁
Java. Bean The Java. Beans API Features implemented as extensions to standard Java Class Library Main Component Services - GUI merging Persistence for saving and restoring the state Event Handling Introspection Application Builder Support so that you can change the Bean at design time 交通大學資訊 程學系 蔡文能 10 -第 41頁
Java. Bean GUI merging and Event Handling User Interface Merging - Containers usually have Menus and/or toolbars - Allows components to add features to the menus and/or toolbars - Define mechanism for interface layout between components and containers Event Handling - Defines how components interact - Java AWT event model serves as basis for the event handling API’s - Provides a consistent way for components to interact with each other 交通大學資訊 程學系 蔡文能 10 -第 42頁
Java. Bean Events • Define a new Event class which extends Event. Object. XEvent • Define a new interface for listeners to implement, this must be an extension of Event. Listener. XEvent. Listener • The Source must provide methods to allow listeners to register and unregister eg add. XListener(), remove. XListener(). • The source must provide code to generate the event and send it to all registered listeners. fire. XEvent() • The listener must implement the interface to receive the event. change. X() • The listener must register with the source to receive the event. 交通大學資訊 程學系 蔡文能 10 -第 43頁
Java Selecting the events 交通大學資訊 程學系 蔡文能 Java. Bean 10 -第 44頁
Java. Bean Attaching Events 交通大學資訊 程學系 蔡文能 10 -第 45頁
Java. Bean Persistent Storage All bean must support either Serialization or Externalization so that Components can be stored and retrieved Purpose: - To use existing data formats and plug into OLE or Open. Doc documents (e. g. , Excel doc inside a Word doc) - To be “trivial” for the common case of a tiny Bean (by saving its internal state) Solutions - Serialization: provides an automatic way of storing out and restoring the internal state of a collection of Java objects - Externalization: provides a Bean with full control over the resulting data layout. 交通大學資訊 程學系 蔡文能 10 -第 46頁
Java. Bean Application Builder Support A builder tool discover a bean’s features by a process known as introspection (自我反省). - Adhering to specific rules (design pattern) when naming Bean features. - Providing property, method, and event information with a related Bean Information class. Provides support for manipulating and editing components at design time Used by tools to provide layout and customizing during design Should be separate from component Not needed at run time 交通大學資訊 程學系 蔡文能 10 -第 47頁
Java. Beans Development Kit (BDK) To start the Bean. Box: - run. bat (Windows) - run. sh (Unix) Tool. Box contains the beans available Bean. Box window is the form where you visually wire beans together. Properties sheet: displays the properties for the Bean currently selected within the Bean. Box window. 交通大學資訊 程學系 蔡文能 10 -第 48頁
Java. Bean Creating a Java. Bean Properties can be customized at design-time. Customization can be done: - using property editor - using bean customizers Events are used when beans want to intercommunicate Requirements for a simple Bean Packaging Bean in a JAR file Additional Information – Bean. Info Defining property editors Defining Bean customizers Naming Conventions 交通大學資訊 程學系 蔡文能 10 -第 49頁
Java. Bean NON Requirements No Bean Superclass Visible interface not required - ‘Invisible’ Beans are OK (timer, random number generator, complex calculation) 交通大學資訊 程學系 蔡文能 10 -第 50頁
Java. Bean Requirements Introspection - Exports: properties, methods, events Properties - Subset of components internal state Methods - Invoked to execute component code Events (If any needed) - Notification of a change in state - User activities (typing, mouse actions, …) Customization - Developer can change appearance Persistence - Save current state so it can be reloaded 交通大學資訊 程學系 蔡文能 10 -第 51頁
Java. Bean Other properties Indexed properties - Array value with get and set elements Bound properties - Triggers event when value changed Constrained properties - Triggers event when value changes and allows listeners to ‘veto’ the change 交通大學資訊 程學系 蔡文能 10 -第 52頁
Java. Bean Design Pattern for javabean All beans should implement the Serializable interface so that the state can be saved and later restored Methods must be made public All exposed methods should be threadsafe, possibly synchronized to prevent more than one thread from calling method at a given time Propertie X is exposed by public set. X and get. X methods Boolean property may be exposed by is. X method which returns a boolean value The bean which may trigger event must provide add. Event. Listener and remove. Event. Listener mehods for other bean to register with it to be notified 交通大學資訊 程學系 蔡文能 10 -第 53頁
Java. Bean Design Pattern rules Constructors A bean has a no argument constructor Simple Properties public T get. N() public void set. N ( T value) Boolean Properties public boolean is. N() public boolean get. N() public void set. N(boolean value) Indexed Properties public value) public 交通大學資訊 程學系 蔡文能 T get. N(int index) T[] get. N() void set. N(int index, T void set. N(T[] values) 10 -第 54頁
Java. Bean. Info class Provides more information using Feature. Descripter objects Subclasses: - Bean. Descripter, Property. Descripter, Indexed. Property. Descripter, Event. Set. Descripter, Method. Descripter, Parameter. Descripter ICON to represent Bean Customizer Class (wizard for set up) Property Editor references List of properties with descriptions List of methods with descriptions Method to reset properties to defaults 交通大學資訊 程學系 蔡文能 10 -第 55頁
Java. Bean The beanbox Primary task is setting property values Property editors for common types - Set Font Set background/foreground colors Set numeric values Set string values 交通大學資訊 程學系 蔡文能 10 -第 56頁
Java. Bean Creating a Bean Usually extends Canvas (New window) Can extend Component (‘lightweight’) Needs constructor with no arguments paint( ) method used to display get. Preferred. Size( ), get. Minimum. Size( ) - For layout manager defaults get and set methods (getter, setter) for each property 交通大學資訊 程學系 蔡文能 10 -第 57頁
Java. Bean Packaging the Bean All java classes can be converted to a bean Create a JAR file (Java. ARchive) - Patterned after tar utility in Unix - Bean is compressed and saved in the format of jar file which contains manifest file, class files, gif files, and other information customization files Create ‘stub’ manifest - Name: smith/proj/beans/Bean. Name. class - Java-Bean: True - (forward slashes even under Windows!) 交通大學資訊 程學系 蔡文能 10 -第 58頁
Java. Bean Compile and make jar file Javac -d. Simple. Bean. java Edit a manifest file called manifest. tmp Name: Simple. Bean. class Java-Bean: True jar cfm. . jarssimplebean. jar manifest. tmp simplebean*. class 交通大學資訊 程學系 蔡文能 10 -第 59頁
Java. Bean Installing the Beanbox: copy jar file to /jars directory within the BDK directory Different depending on tool used 交通大學資訊 程學系 蔡文能 10 -第 60頁
Java. Bean My. First. Bean import java. awt. *; import java. io. Serializable; public class First. Bean extends Canvas implements Serializable { public First. Bean( ) { set. Size(50, 30); set. Background(Color. blue); } } 交通大學資訊 程學系 蔡文能 10 -第 61頁
Java. Bean Prepare First Bean Compile: javac First. Bean. java Create a manifest file: mani. txt Name: First. Bean. class Java-Bean: True Create a jar file: jar cvfm First. Bean. jar mani. txt First. Bean. class 交通大學資訊 程學系 蔡文能 10 -第 62頁
Java. Bean Using Beans in an application Use Beans. instantiate Frame f; f = new Frame("Testing Beans"); try { Class. Loader cl = this. get. Class( ). get. Class. Loader( ); fb =(First. Bean)Beans. instantiate(cl, "First. Bean"); } catch(Exception e) { e. print. Stack. Trace( ); } f. add(fb); 交通大學資訊 程學系 蔡文能 10 -第 63頁
Java. Bean Events and Bean. Info interface Question: how does a Bean exposes its features in a property sheet? Answer: using java. beans. Introspector class (which uses Core Reflection API) The discovery process is named “introspection” OR you can associate a class that implements the Bean. Info with your bean Implementing the Bean. Info interface allows you to explicitly publish the events a Bean fires 交通大學資訊 程學系 蔡文能 10 -第 64頁
Java. Bean Events “Introspection” For a bean to be the source of an event, it must implement methods that add and remove listener objects for the type of the event: - public void add<Event. Listener. Type>(<Event. Listener. Type> elt); - same thing for remove These methods help a source Bean know where to fire events. Source Bean fires events at the listeners using method of those interfaces. - Example: if a source Bean register Action. Listsener objects, it will fire events at those objects by calling the action. Performed method on those listeners 交通大學資訊 程學系 蔡文能 10 -第 65頁
Java. Beans and Threads Assume your beans will be running in a multithreaded environment It is your responsibility (the developer) to make sure that their beans behave properly under multithreaded access For simple beans, this can be handled by simply making all methods …. . . 交通大學資訊 程學系 蔡文能 10 -第 66頁
Java. Beans Tools BDK - Sun Net. Beans – www. netbeans. org Jbuilder - Inprise Super Mojo - Penumbra Software Visual Age for Java (Eclipse) – IBM Visual Cafe - Symantec Corporation JDeveloper Suite - Oracle 交通大學資訊 程學系 蔡文能 10 -第 67頁
Java. Bean Extend your JDK and JRE 把 所有 class 都壓縮到一個. jar 檔案 (名稱隨意, 但不要與現有的重複) 例如: jar cvf myutilabc. jar M*. class So*. class (也可用 WINZIP 壓成 ZIP 檔再 rename 成. jar 檔) 把壓好的. jar 檔 copy 到 你 JDK 根目錄下的 jrelibext 即可 - 注意. jar 檔中的目錄樹要與各 class 宣告的 package 相符合 就是說不可以欺騙 Java compiler 與 Interpreter (JVM) 可用 jar tvf your. jar 看看 (或用 WINZIP 看) 打 jar 看看 help 這樣 javac My. Class. java 編譯 或 java My. Class 執行就都不用指定classpath - 若不是放 JDK 的 jrelibext 中, 則要指定. jar 檔為你的 classpath javac -classpath. /mydir/myutil. jar; My. Test. java -classpath. /mydir/myutil. jar; My. Test (注意 分號不能省; 可以多個 jar 檔用 ; 分開, 也可為目錄) 交通大學資訊 程學系 蔡文能 10 -第 68頁
Java. Bean What’s in a Framework? A framework is a defined support structure in which other software applications can be organized and developed. A software framework is a reusable design and building blocks for a software system and/or subsystem Features: - Knowledge base Product reviews, configuration information, lessons learned - Document templates Requirements, Use Cases, Design Specs, Test Plans, etc. - Design patterns, standards Coding & naming standards, proven design strategies, etc. - Code libraries Base classes, format utilities, tag libraries, etc. - Code templates and generators Automated generation of starting code, based on templates 交通大學資訊 程學系 蔡文能 10 -第 69頁
Java. Bean WAF -- Web Application Framework A Web Application Framework (WAF) is a reusable, skeletal, semi-complete modular platform that can be specialized to produce custom web applications , which commonly serve the web browsers via the Http's protocol. WAF usually implements the Model-View-Controller (MVC) design pattern, typically in the Model 2 architecture to develop request-response web-based applications on the Java EE and. Net models 交通大學資訊 程學系 蔡文能 10 -第 70頁
Java. Bean The Struts Framework Struts is an open source MVC framework developed by the Apache Jakarta project group. Struts allows JSP/Servlet writers the ability to fashion their web applications using the MVC design pattern. By designing your web application using Struts you allow: - Architect the ability to design using the MVC pattern - Developer to exploit the Struts framework when building the app. - Web designer can learn how to program in MVC. Struts takes much difficult work out of developing an MVC based web app. The Struts framework provides a collection of canned objects which can facilitate fundamental aspects of MVC, while allowing you to extend further as need suites http: //jakarta. apache. org/struts/ 交通大學資訊 程學系 蔡文能 10 -第 71頁
Java. Bean Components of Struts Framework Model - Business Logic Bean(or session bean)、State. Bean(or entity bean)、Action. Form。 (see EJB) View - A Set of Tag library. - Language Resource File Controller - Action. Servlet( controlled by struct-configs. xml) - Action. Classes Utility Classes 交通大學資訊 程學系 蔡文能 10 -第 72頁
Java. Bean Spring Framework A popular and stable Java application framework for enterprise development - Ubiquitous for Java development - Well established in enterprise Java apps - Time tested and proven reliable A primary purpose is to reduce dependencies and even introduce negative dependencies - Different from almost every other framework out there - Part of the reason it has been adopted so quickly Spring code base is proven to be well structured - Considered an alternative / replacement for the Enterprise Java. Bean (EJB) model - Not exclusive to Java (e. g. . NET) http: //www. springframework. org/ 交通大學資訊 程學系 蔡文能 10 -第 73頁
Java. Bean in Spring Framework Typical java bean with a unique id In spring there are basically two types - Singleton One instance of the bean created and referenced each time it is requested - Prototype (non-singleton) New bean created each time Same as new Class. Name( ) Beans are normally created by Spring as late as possible http: //www. springframework. org/ 交通大學資訊 程學系 蔡文能 10 -第 74頁
Java. Bean Facebook adopts LAMP architecture LAMP stands for Linux-Apache-My. SQL-PHP. Instead of PHP, Perl and Python are also used. This is a free and lightweight alternative to “WISA, ” Windows-IIS-SQL Server-ASP (and now, ASP. Net). These are ALL free. - Richard Stallman started the GNU Project and spearheaded the free software movement. - Richard Stallman says “free” represents end users’ liberties, not the price of software. GPL (GNU Public License) requires improved programs to also remain free. ( © Copy. Left ) 交通大學資訊 程學系 蔡文能 10 -第 75頁
Java. Bean GNU/Linux “GNU Project” “GNU Operating System” Richard Stallman started the GNU Project at Sep. 1983 GNU (GNU’s Not Unix) was to replace UNIX. Microkernel vs. Monolithic kernel. - Mach microkernel was to complete the GNU OS. - In 1992 Andrew Tanenbaum said “Linux is Obsolete” because Linux has a monolithic kernel. - Microkernel is more secure, not as efficient. - Today, monolithic kernels are still going strong. Linux could not have happened without GNU. Stallman requested that “GNU/Linux” be used. Richard Stallman 交通大學資訊 程學系 蔡文能 != William Richard Stevens 10 -第 76頁
Java. Bean Apache HTTP Server Apache has been the most popular web server since April 1996 when it passed NCSA. Apache Software Foundation (ASF) is a non-profit organization that develops several high-quality open-source programs. Jakarta project by ASF has a number of high-quality Java web development tools: - http: //jakarta. apache. org/ In April 1996, Apache stood at 29% (and IIS at 1. 6%) of the web server market: - http: //survey. netcraft. com/Reports/9604/ALL/ In May 2010, Apache stands at 55% (and IIS at 25%): - http: //news. netcraft. com/archives/web_server_survey. html 交通大學資訊 程學系 蔡文能 10 -第 77頁
Java. Bean Some ASF Java Tools Derby: Java database (originally IBM Cloudscape; now also called Sun Java DB) Tomcat: Servlet and Java. Server Pages (JSP) Server. Ant: Portable build tool (java “make”) Struts: Web application framework for input validation and flow control (page-to-page). Lucene: Text indexing/search ASF stands for Apache Software Foundation (ASF) See http: //jakarta. apache. org/ 交通大學資訊 程學系 蔡文能 10 -第 78頁
Java. Bean Other Topics 謝謝捧場 http: //www. csie. nctu. edu. tw/~tsaiwn/java/ 蔡文能 交通大學資訊 程學系 蔡文能 10 -第 79頁
a8addb7297bab6bdc28510235bd74006.ppt