<<

Extreme G22.3033-007

Session 4 - Main Java Core Technologies (Part II)

Dr. Jean-Claude Franchitti

New York University Computer Science Department Courant Institute of Mathematical Sciences

1

Agenda

• Summary of Previous Session • Java AWT and components • Drag and Drop • Graphics and Multimedia Components (JavaMedia) • JavaBeans • Readings • Class Project & Assignment #2b

2

1 Summary of Previous Session

• Java Platforms and Features • J2SE Core Components and Optional Packages •Swing • Collections Framework • Assistive Technologies • Introduction to J2EE • XML and Java • Readings • Class Project & Assignment #2a

3

Java Technologies/Features in Scope • Technologies: • Collections Framework • Input Method Framework • Swing • Drag and Drop • JavaBeans •JNI • Security • Language Features: • Threads

• Assertions 4

2 Part I

User Interfacing Technology

5

AWT & Swing Components http://java.sun.com/j2se/1.4/docs/guide/swing/index.html

• Swing is part of the (JFC) • Swing implements GUI components with “PLAF” • PLAF: “Pluggable ” • GUI components automatically adapt their look and feel to that of the OS platform • Swing includes the AWT component • , , , etc. • Swing also includes higher level components • TreeView, , tabbed panes, etc. • See Session 3 Sub-Topic 1 Presentation on Swing • See Session 3 Handout on Detailed Review of the Swing Packages 6

3 AWT & Swing Components (Java 2 SDK 1.4 Enhancements) • Indeterminate progress bars (JProgressBar) • Show that a time-consuming operation is occurring • Do not show the degree of completeness of an operation • JTabbedPane: Scrollable Tabs

• Spinners • Let users select a value from an ordered set

• JFormattedTextField • Supports input of dates in current locale format 7

AWT & Swing Components (Java 2 SDK 1.4 Enhancements - continued)

• Popup and PopupFactory Changes • Allows popup compatibilty with custom look and feel implementations • New AWT Focus Model Specification • Windows Look and Feel Updates

8

4 Swing vs. SWT

Open Platform for Tool Integration • 100% implemented in Java • Support extensions based on “plug-ins” • Does not use a single line of AWT or Swing! • Used the Standard (SWT) and JFace for more complex widgets, images, and font registries • SWT uses native widgets except when a class of widget is not commonly available on all target platforms. • In that case, SWT emulates the widget 9

Swing vs. SWT (continued) • SWT Advantages • GUIs look and feel exactly like native GUIs • Graphics performance is close to native • Platform-specific features can be accessed if desired • E.g., embedding ActiveX controls, and using native DnD • SWT Drawbacks • No support for pluggable look and feels • Door open to write non-portable code • See STW/Swing comparison sample program at: http://www.fawcette.com/javapro/2002_12/magazine/column s/proshop/page2.asp 10

5 SwingML (http://swingml.sourceforge.net/) • Markup language to render JFC/Swing based GUIs in a Web browser • Alternatives? • Use JSP, JavaBeans, XSLT, and Servlets to generate dynamic HTML • HTML cannot support complex functionality such as a component with &D • Use JavaScript and Applets • JavaScript support is not uniform across browsers • Applets combined with JFC/Swing components • Difficult to retrieve information from server: use RMI, HTTP Tunneling, or … XML! 11

SwingML Architecture

• Server-side component produces SwingML and returns it to the client side • On the client side, an applet (“renderer”) receives the SwingML markup text and uses it to render the GUI

12

6 XML-based Language (XUL) (http://www.mozilla.org/xpfe/xptoolkit/xulintro.html)

xul." type="text/css"?>

13

Other Rich, Cross-Platform, ZAC GUI Solutions • Known Variations • (1) Browser-plugins (a la Applets, SVG) - Flash • (2) Language (a la Java, JavaScript) - Curl, Rebol • (3) Improved HTML (a la XUL) - NexaWeb, SashXB • (4) Improved installers (a la Web Start) - AppStream • Luxor XUL (http://luxor-xul.sourceforge.net) • XML Windowing Toolkit - XWT (http://www.xwt.org) • JellySwing (http://jakarta.apache.org/commons/sandbox/jelly/jellyswing.html) •Thinlets (http://www.thinlet.com/) • KoalaGM (http://koalagml.sourceforge.net/) • Java GUI Builder (http://jgb.sourceforge.net/) • Not Yet Xulux (Nyx), Motlib.Net, Rocklyte Systems, Altio, Bali Spidertop, droplets, Ultra Light Client (ULC), Kenamea, Softricity, etc. 14

7 Light Client GUI Solutions Selection Criteria

• Must be able to support alternative GUI toolkits • Sun’s Swing, Eclipse’s SWT, Trolltech , Gnome Gtk+, etc. • Must be able to support various engine • Java, #, Shark, etc.

15

Part II

Drag and Drop

16

8 Drag and Drop

• See Session 4 Handout on Drag and Drop Data Transfer

17

New Drag and Drop Architecture http://java.sun.com/j2se/1.4/docs/guide/swing/1.4/dnd.html

• Swing added support for data transfer between applications • Drag and Drop (DnD) • Clipboard transfer via cut / copy / paste • Data transfer support changes • API to enable data transfer with a few method calls • New TransferHandler class, and JComponent property methods setTransferHandler and getTransferHandler • Swing DnD implementation can be disabled to use that of AWT • Look and feel implementation changes

18

9 New Drag and Drop Architecture (Adding Dnd Support to a Label text property)

JLabel componentType = new JLabel(); componentType.setTransferHandler(new TransferHandler("text")); MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { JComponent c = (JComponent)e.getSource(); TransferHandler th = c.getTransferHandler(); th.exportAsDrag(c, e, TransferHandler.COPY); } }; componentType.addMouseListener(ml);

19

Part III

Java Media Framework (JMF)

20

10 Graphics and Multimedia Components

• Media : • Enables developers to create Java applets and applications that can handle rich, interactive media types (audio, video, 2D imaging, 3D graphics, animation, collaboration, telephony, and speech) • (line art, text, and imaging), Java 3D, Java Advanced Imaging, Java Media Framework (JMF), Java Speech, Java Sound, Java Telephony • See Session 3 Handout on Java Platform Component APIs • See Session 4 Handout on Graphics and Multimedia

Components - Java 2D 21

Part IV

JavaBeans Component Architecture

22

11 JavaBeans

• See Session 4 Handout on Component Modeling with JavaBeans • The JavaBeans component architecture allows reusable component development • The JavaBeans specification defines a set of standard component software APIs for the Java platforms • Javabeans components interoperate with ActiveX • JavaBeans APIs are portable to mainstream containers (IE, VB, Word, Lotus Notes, etc.) 23

JavaBeans Enhancements in 1.4 (http://java.sun.com/j2se/1.4/docs/guide/beans/changes14.html)

• New API for Long-Term Persistence • Other API Additions • Changes to the Introspector • Garbage Collection and Custom Attributes • Bean Builder 1.0 Beta • Java Web Start-enabled Visual application builder that includes source code • http://java.sun.com/products/javabeans/beanbuilder/index.html

24

12 JavaBeans Activation Framework (JAF)

• Framework can be used to: • (a) determine the type of an arbitrary piece of data • (b) encapsulate access to it • (b) discover the operations available on it • (c) instantiate appropriate Beans components to perform these operations • See: • http://java.sun.com/products/javabeans/glasgow/jaf.html

25

Part V

Readings and Assignment

26

13 Assignment • Readings • Mastering Java 2: Part 2 – Chap. 12-13, 15, 21 • Expert One-on-One: Chapter 2-4 as applicable (cont.) • Selected readings mentioned in class or referenced in the handouts • Handouts posted on the course web site • Assignment #2b: (submit report and implementation archive) • Add drag-and-drop facilities to the Java framework-based application developed in assignment #2a. • Extra credit: Reimplement (part of) the GUI using SWT • Refer to the Homework #2 Specification posted on the course Web site. • Project Framework Setup • J2EE IDE: IBM WSAD, WAS, DB2 • Java Plug-in, Java Web Start, Apache’s Xerces/Xalan • J2SE 1.3.1, 1.4.0 or 1.4.1 (SDK) • IDE: Eclipse, NetBeans, Sun ONE Studio, JBuilder, Visual Age, Visual Café, Codewarrior, WebGain Studio, Oracle JDeveloper, etc. • Editors: JCreator, UltraEdit, etc. 27

14