Java™: What can it do and where is it going? 9/1/2004
by user
Comments
Transcript
Java™: What can it do and where is it going? 9/1/2004
Java™: What can it do and where is it going? Andy Brodie 9/1/2004 Java: What is can do and where is it going? Presentation Contents What is Java? Java and XML Java and Web Services The Future 2 Java: What can it do and where is it going? What is Java? 9/1/2004 Java: What is can do and where is it going? The Java Language “The Java™ programming language is a general-purpose, concurrent, class-based, object-oriented language “ – Java Language Specification Provides many features of object orientation technology. Largely copies the C syntax int main(int argc, char **argv) { public static void main(String[] args){ for (int i=0; i<argc; i++) { printf(“%s\n”,argv[i]); } 4 for (int i=0; i<args.length; i++) { System.out.print(args[i] + “\n”); } Java: What can it do and where is it going? Java: What is can do and where is it going? Java is not C++… Java does not have: Pointers … well… almost… Garbage collection. Operator Overloading. Arrays as first class objects and bounds checking. Goto. Structs or unions. Multiple Inheritance. 5 C++ does not have: Built in program documentation (javadoc). Templates. A single “root” object, from which all others inherit. Automatic Type conversion. A dedicated immutable “String” type. #typedefs, #define, or #anything! Primitive type size consistency. Default arguments. Automatically nulled variables. No explicit in-lining Built-in concurrency. Java: What can it do and where is it going? Java: What is can do and where is it going? The different types of Java Java™ 2 Platform, Micro Edition (J2ME) For consumer electronics and embedded devices. Java™ 2 Platform, Standard Edition (J2SE) “Normal” Java Java™ 2 Platform, Enterprise Edition (J2EE) An extension to J2SE that provides: Rapid development and deployment of enterprise applications. Covers Security, Transactions, Distribution Containers supplying runtime support for J2EE application components. Encourages 3-tier architectures with separation of business and display logic. 6 Java: What can it do and where is it going? Java: What is can do and where is it going? A Brief History of Java Number of Classes 0 1990 – James Gosling, Patrick Naughton and Mike Sheridan start project Oak. 1997 – Java SDK 1.1 Released 1998 – Java 2 Language Released (1.2 2000 – J2SE SDK 1.3 Java Version 1996 –Java SDK 1.0 Released (first commercial) 1000 1.0.2 202 1.1 477 1.2 1524 1.3 1840 1.4 2724 1.5 3278 2002 – J2SE SDK 1.4 2004 – J2SE 5.0 Released (J2SE SDK 5.0) 7 Java: What can it do and where is it going? 2000 3000 4000 Java: What is can do and where is it going? The Java Virtual Machine (JVM) Java source is compiled in to byte code. Byte code executes on the Java Virtual Machine (JVM). Platform independent execution environment that abstracts operating system specifics from the developer/user. The byte code is interpreted by the JVM at runtime. (Similar to Pascal’s PCode.) The Just In Time (JIT) compiler converts Java bytes codes into native machine code for quicker execution. Allows Java performance to be comparable to C++. The JVM forms a “sandbox” to execute applications. 8 Java: What can it do and where is it going? Java: What is can do and where is it going? The Sandbox A term often banded around to describe Java applications and applet environments. Consists of 3 parts: The byte code verifier – stops “bad” programs from executing The class loader – loads code in to memory. The security manager – polices the executing code. Operating System JVM Byte Code Verifier 9 Class Loader Application Java: What can it do and where is it going? Security Manager Java: What is can do and where is it going? How multi-platform is J2SE? Java is often touted as “multi-platform”, but how many platforms have JREs or JDKs? Windows IA32 Solaris x86 IBM NUMA-Q Solaris Mac OS X Linux S/390 64 Linux IA64 I5/OS Windows IA-64 Solaris SPARC 10 Linux/S390 AIX/PPC64 OS/2 Linux IA32 Linux IA32 zOS Java: What can it do and where is it going? Mac OS Classic Linux IA64 AIX/PPC32 HP-UX Irix Windows IA64 Windows IA-32 Java: What is can do and where is it going? Enforcing J2SE compatibility Sun licenses the Java Compatibility Kit (JCK) to J2SE vendors Latest version contains 45,194 individual tests. Up from Java 2 JCK which had 27,309. Why do you need the JCK? Without a successful pass you cannot call it Java or use the Java logo. 11 Java: What can it do and where is it going? Java: What is can do and where is it going? How many J2EE licensees are there? 32 at last count… Trifork Technologies IronFlare Data Direct Technologies Sonic Software Corporation SeeBeyond ObjectWeb Tmax Soft Macromedia JBoss Group SpiritSoft Hitachi Pramati NEC Apache Software Foundation BEA Systems SAP webMethods Borland Group ATG Fujitsu Oracle Corporation Kingdee Middleware SAS Institute, Inc. 12 Sun Microsystems IBM Novell (Silverstream) Sybase, Inc. HP Nokia IONA Technologies Caucho Technology Inc. Java: What can it do and where is it going? TIBCO Software Inc. Java: What is can do and where is it going? J2EE Compatibility In the same way that Sun controls the use of the Java logo. J2EE implementations must pass a compatibility suite. There are compliant implementations of J2EE 1.4 from: IBM - WebSphere Application Server Technology for Developers v6.0 JBoss – JBoss Application Server (open source) Oracle – Oracle application Server Containers for J2EE 10g Sun – Sun Java System Application Server Platform Edition 8 TMax Soft – JEUS 5.0 Trifork – Trifork T4 Application Server 13 Java: What can it do and where is it going? Java: What is can do and where is it going? Who “controls” Java? Sun has ultimate control of Java. The Java Community Process – http://www.jcp.org Produce Java Specification Requests (JSRs) determine future direction of the Java language and libraries. 338 JSRs have been produced so far. Almost all new language features and standard libraries come via the JCP. Participated in by Java licensees and vendors: Such as: IBM, Apple, BEA Systems, Compaq, HP, Novell, Symantec, Wind River, Oracle and Silverstream 14 Java: What can it do and where is it going? Java: What is can do and where is it going? Microsoft .NET and Java The Equivalences Java Platform .NET Which is better? Java Virtual Machine (JVM) Common Language Runtime (CLR) BOTH are here to stay. Byte Code Microsoft Intermediate Language (MSIL) .NET and Java platform provide some equivalent facilities, shown here Swing Windows Forms J2SE/J2EE .NET Framework class library EJB COM+ Services J2EE Server .NET Framework JSP ASP.NET JDBC ODBC J2ME .NET Compact Framework Can .NET and Java work together? Service-Oriented Architectures and Web Services fit both .NET and J2EE. The WS-I profiles promote interoperability between .NET and Java applications via Web Services. The Web Service Interoperability Organization produces WS-I Profiles. See http://www.ws-i.org. 15 Java: What can it do and where is it going? Java: What is can do and where is it going? C# - The Closest Language to Java C# bears more than a passing resemblance to Java. However… The are plenty of pitfalls for the Java programmer to fall in to by expecting C# to behave the same way as Java. E.g. No checked exceptions, casting objects changes their behaviour …and several for a C# programmer to fall in to by expecting Java to behave the same way as C#! E.g. Switch statement fall-through and constructors with same name as enclosing type. 16 Java: What can it do and where is it going? Java and XML Java provision for the processing of XML data. 9/1/2004 Java: What is can do and where is it going? Java and XML Java includes libraries specifically for XML document generation, parsing and transformation: Java API for XML Parsing: JAXP Supports DOM and SAX W3C standards for document parsing and representation. TRansformation API for XML- TRAX Supports the XSLT language for specifying transformations of XML. Java API for XML Bindings – JAXB Static and Dynamic generation Java classes based on XML. Java API for XML-based Remote Procedure Calls – JAX-RPC Invocation of methods on remote services using XML-based calls. 18 Java: What can it do and where is it going? Java: What is can do and where is it going? JAXP Example: Parsing an XML document Creating an document object model (DOM) of an XML document is easy: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File(xmlInputFile)); From here you can read, edit and write out the document. For large XML documents, there is Simple API for XML (SAX), that is an “event driven” way of reading a document. 19 Java: What can it do and where is it going? Java: What is can do and where is it going? TRAX: Transforming XML documents Transformations are done via the eXtensible Stylesheet Language Transformation (XSLT) specification. Each stylesheet is an XML document that contains a mix of declarative and programmatic constructs to transform an XML document in to another (XML or plain text) document. Java provides the TRAX API to apply stylesheets to XML documents. 20 Java: What can it do and where is it going? Java and Web Services 9/1/2004 Java: What is can do and where is it going? What is a Web Service? “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” – The W3C. Helped to develop standards for web services… Invocation: Simple Object Access Protocol (SOAP) Description: Web Service Definition Language (WSDL) Location: Universal Description, Discovery and Integration Project (UDDI) Transport: HyperText Transport Protocol (HTTP) 22 Java: What can it do and where is it going? Java: What is can do and where is it going? Web Services, Java and J2EE Web Services are gaining popularity and recognition as an important technology for the future of business computing. Tools, specifications and libraries to make it easy to create, publish and invoke Web Services from within a Java environment. See the Web Services Interoperability WS-I Basic Profile on http://www.ws-i.org. Enabling inter-operability between Java and non-Java services. Support for Web Services described in J2EE 1.4 Specification Also JSR-109 - Web Services for J2EE, Version 1.0 J2EE 1.4 platform provides tools and libraries to facilitate the development and deployment of web services in a J2EE container. Many vendors provide tooling to automatically generate WSDL and SOAP interfaces. You don’t want to be writing XML by hand! For example: WebSphere Application Developer Studio (WSAD). 23 Java: What can it do and where is it going? Java: What is can do and where is it going? Java API for XML-based Remote Procedure Calls (JAX-RPC) Developed through JSR-101. JAX-RPC 1.0 defines APIs and conventions for supporting XML based RPC in the Java platform. JAX-RPC 1.1 adds support for the WS-I Basic Profile 1.0 to improve interoperability between JAX-RPC implementations and with services implemented using other technologies. JAX-RPC is designed to keep the platform independence of Web Services and XML. Describes a reversible mapping from WSDL 1.1 to Java Target namespaces can be mapped to and from Java packages Port types can be mapped to and from Java classes Operations can be mapped to and from methods Etc. 24 Java: What can it do and where is it going? The Future Where J2SE and J2EE are going 9/1/2004 Java: What is can do and where is it going? J2SE 5.0 The product formerly known as J2SE 1.5, a.k.a. Tiger Version number changes as the language is changing, not just the supplied libraries. Released Java 5 on September 30th 2004. New language features: Annotations Generic Types Enumerated types Automatic conversion between primitive and object types: “Autoboxing” Memory Model Variable arguments: “varargs” Enhanced loop syntax Static Imports Over 8002 features, enhancements and bug fixes integrated in to J2SE 5.0. 26 Java: What can it do and where is it going? Java: What is can do and where is it going? Some of the J2SE 5.0 features Autoboxing: Automatic conversion between primitive types and their object equivalents. Integer six = new Integer(5) + 1; Enhanced loops: int myArray[] = new int[10]; int total; for (i : myArray) { total += i; } Annotations: Simple markers or data structures compiled in to class files. Similar to javadoc tags, such as @deprecated. @api public void doIt(); 27 Java: What can it do and where is it going? Java: What is can do and where is it going? J2SE 5.0 Language Features (cont.) Generics (a.k.a. Parameterized Types) E.g. not just a set of objects, but a set of strings. Collection content types can be enforced at the language level. Simplifies code and improves robustness. NOT C++ Templates!! Enumerated Types True type-safe enumerated types (unlike C). Can use constants inside switch statements. Static Imports Allows usage of static constants and methods without needing to qualify. import static com.xyz.ConstantsClass.*; message.setReliability(MY_FINAL_VALUE); 28 Java: What can it do and where is it going? Java: What is can do and where is it going? Java 2 Enterprise Edition 1.5 (JSR-244) Theme is “Ease of Development” J2EE often criticised for complexity…. … when it was specifically designed to make life easier! Still in the very early stages, expert group is being formed. What’s proposed for J2EE 1.5? Enterprise Javabeans 3.0 - JSR-220 Abolishes local and remote bean and home interfaces. Replaced by Java 5 annotations JavaServer Faces - JSR-127 A user interface (UI) framework for Java Web Applications. Emphasises the re-use aspects of UI components. Web Services Metadata for the Java Platform (JSR-181) Uses annotations to declare how Java methods should be presented as Web Services. Java APIs for XML Binding (JAXB) 2.0 (JSR-222) Java API for XML based Remote Procedure Calls (JAX-RPC) 2.0 (JSR-224) Standard Tag Library for Java Server Pages (JSTL) 1.1 (JSR-52) 29 Java: What can it do and where is it going? End. Thank you for listening! 9/1/2004