370 likes | 643 Vues
Introduction to Java Programming. Cheng-Chia Chen Feburary 2006. Course web page. Lecture 1. Introduction. Cheng-Chia Chen. Contents. What is Java? Features of Java History of Java Develop first Java program Deploy java programs through the internet via Java applet
E N D
Introduction to Java Programming Cheng-Chia Chen Feburary 2006
Lecture 1. Introduction Cheng-Chia Chen
Contents • What is Java? • Features of Java • History of Java • Develop first Java program • Deploy java programs through the internet • via Java applet • via Java Web Start
What is Java? Java is • a programming language, • defined in The Java language specification (v1,v2,v3) • a virtual machine, • Defined in The java virtual machine (v1, v2) • a platform • Standard edition (j2se): • Java 2 platform standard edition 5.0 • Enterprise edition(j2ee): V1.4, V5.0 soon. • Micro edition (j2me): v1.0,CLDC1.1,MIDP2.0,…
servers & enterprise computers Desktop & personal computers High-end consumer devices Low-end devices J2ME smartcards Java 2 Platform editions and their target markets
What is J2EE ? • source • What is the Java 2 Platform, Enterprise Edition (J2EE)? • a platform that enables solutions for developing, deploying and managing multi-tier server-centric applications. • Extend J2SE to a complete, stable, secure, fast Java platform to the enterprise level. • A platform which significantly reduces the cost and complexity of developing multi-tier solutions, results in services that can be rapidly deployed and easily enhanced.
Benefits of J2EE 1. Complete Web services support. 2. Faster solutions delivery time to market. • Enterprise infrastructure and concerns provided and solved by j2ee. • Developers need only focus on writing business logic . 3. Freedom of choice. • System assembled from standard components which can be supplied by various vendors. 4. Simplified connectivity. • Supply standard to connect legacy systems, enterprise information system, and bring capability to web and mobile devices. 5. Reduce TCO(total cost of ownership) and avoid single-source for software needs of enterprises.
Technologies included in J2EE • Java API for XML-Based RPC (JAX-RPC), • JavaServer Pages, Java Servlets, • Enterprise JavaBeans components, • J2EE Connector Architecture, • J2EE Management Model, • J2EE Deployment API, • Java Management Extensions (JMX), • J2EE Authorization Contract for Containers, • Java API for XML Registries (JAXR), • Java Message Service (JMS), • Java Naming and Directory Interface (JNDI), • Java Transaction API (JTA), • CORBA, and • JDBC data access API.
What is J2ME ? • 1.What is the Java 2 Platform, Micro Edition (J2ME)? • The JavaTM 2 Platform, Micro Edition is the edition of the Java 2 platform targeted at consumer electronics and embedded devices. • The J2ME technology consists of a virtual machine (KVM) and a set of APIs suitable for providing tailored runtime environments for consumer and embedded electronics. • Configurations v.s. profiles • Device characteristics: • memory size / processor • size and depth of display screen (UI) • power consumption (battery-based) • networking capability (limited, not TCP/IP based?)
Features of the java language: Java is • simple • object-oriented • distributed • interpreted • robust • secure • architecture-neutral • portable • high performance • multithreaded • dynamic
Java is Simple • Intentionally created to be syntactically similar to C/C++ • Eliminates traditionally troublesome features of C/C++ • Pointer arithmetic • Multiple inheritance • Implicit type coercions • Explicit memory management • Preprocessor • Eliminates features of C/C++ • struct • typedef • union • enum (recovered in jdk5.0) • (Programmer controlled) operator overloading • Features included as part of base language: • Threads • Exception handling
Java is Object-oriented • Systems are built from sets of classes • Classes are instantiated at runtime to give objects • Objects communicate via messages passing • Everything is part of a class • supported OO Concepts: • Data abstraction and Encapsulation • Inheritance • Polymorphism • Dynamic Binding • e.g. variable of Object type can hold everything • Logical cluster of classes == package
Java is a Distributed language • Network programming support built into JDK class library: • TCP sockets • UDP packets • IP addresses • URLs • RMI (Remote Method Invocation) • Web Service • Security features designed into language • Network programming facilities are one of the language's best features.
Java is an Interpreted language • Source code is initially compiled (javac) into architecture-neutral byte-codes • Byte-codes are interpreted by the java virtual machine (JVM) (java or Netscape) • Dynamic linking/loading (at run time) • (Just In Time) JIT compilers lead to a large performance increase in compilation and runtime execution
Java is Robust • Strongly-typed language (cf Smalltalk and VisualBasic) • Compile-time and runtime checking • No pointer arithmetic • Exception handling • Automatic memory management
Java is secure • Designed with security in mind. • Allow users to download untrusted code over a network and run it in a secure environment in which it cannot do any harm. • Configurable security levels and restrictions. • subjected to intense scrutiny by security experts with [potentially serious ] bugs found and fixed. • become a big news if new bugs found!! • One of the best mainstream platforms with the strongest security guarantee.
Java is Architecture-neutral • Byte-codes are architecture neutral • Performance suffers by using bytecodes
Java is portable • Primitive type sizes are explicit - not architecture dependent • Strings and characters are (16-bit) Unicode compliant • easier for internationalization. • GUI libraries give a native graphic library-independent mechanism for creating quality graphical interfaces (sort of) • "They gave us a library that is good for writing programs that look equally mediocre on the different systems."(Core Java, page 9)
High performance • Interpreting leads to quicker development cycle • Depends what you compare it to • "Slightly faster than VB" - (Core Java, page 9) • JITC(Just-In-Time Compiler) help greatly in this respect • Sun’s Java HotSpot is Newest high performace JIT compiler. • Can use native code for mission-critical performance sections of code • JNI: Java Native Interface • Sacrifice portability.
Multithreaded • Based on well-known 20 year old Hoare monitor synchronization • Thread support built into language • Thread synchronization primitives supplied • Garbage collector runs permanently as a low priority background thread
Dynamic • Class linking, layout, name resolution and object references not resolved until run-time • Runtime Type Information (RTTI) available • Can check the type of objects at run-time • java.reflect.* package • Class class for dynamic instantiation • Can create objects of types unkown until runtime. • String sexClassName = getSex(); • Object p = Class.forName(sexClassName).instance(); • If(p instanceof Male) {…} • else if (p instanceof Female) { … } • else {… }
An Example /** * The HelloJava class implements an application that * simply displays "Hello Java!" to the standard output. */ class HelloJava { public static void main(String[] args) { // Display "Hello Java!" System.out.println("Hello Java!"); } }
History of Java • Green Project (1990) • Consumer device operating software • Requirements: small size, robust, portable, extremely reliable ,real-time performance • Oak • Originally used C++, then realized a new language was needed • Original requirements same as for current language • Java (1993) • Intended market never eventuated • WWW starting to takeoff • Language design "based on" many current OO languages (e.g., C++, Eiffel, Smalltalk, Cedar/Mesa, Objective C) • 1995/5/23 Sun launched Java • JDK 1.0 released early 1996/1/23 ( 212 classes / 8 pkgs)
History of Java • 1997 … • 2/18: Complete JDK1.1 released (504 classes / 23 packages ) • 3/28: JDK1.1.1, 5/28: JDK1.1.2, 7/2: JDK1.1.3,… • 1998: • 9/28: JDK1.1.7, • 12/8: J2SE (1,520 classes / 59 packages ) • 1999: • 6/? J2ME • 12/7 J2EE • 2000 • j2se 1.3 (1,842 classes / 76 packages. ) • 2001 • J2SE 1.4.0 (2,991 classes / 135 packages ) • 2004 • 9/30 j2se 5.0 (3562 classes/ 166 packages )
Develop your first Java Program and applet 1. Required software 2. Creating Your First Application a. Create a Java Source File b. Compile the Source File c. Run the Program d. invoke the program remotely via Java Web Start. 3. Creating Your First Applet a. Create a Java Source File b. Create related HTML files c. Compile and run the Source File
Required Softwares To write your first program, you will need: 1. The JavaTM 2 Platform, Standard Edition. 2. A text editor. Ex: • NotePad, • Ultraedit, • EditPlus2
2. Creating Your First Application • The first program, HelloWorldApp, will simply display : “Hello World!". • Steps: • a. Create a Java source file. • > Notepad HelloWorldApp.java • b. Compile the source file into a bytecode file. • > javac HelloWorldApp.java • c. Run the program contained in the bytecode file. • >java HelloWorldApp • d. invoke the program remotely via JavaWeb Start. • d.1 :> jar cf HelloJWS.jar HelloWorlApp.class • d.2 : prepare HelloJWS.jnlp • d.3 : prepare web page to hyperlink • HelloJWS.jnlp
HelloJava.java /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { // Display "Hello World!" System.out.println("Hello World!"); } }
d. Invoke Java application remotely via JWS <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0" codebase="http://61.70.136.131/courses/java/java2003fall/jws/" href="helloJWS.jnlp"> <information> <title>Hello Java Web Start</title> <vendor>Cheng-Chia Chen</vendor> <homepage href="index.html"/> <description>A simpe Demo of Java Web Start.</description> <offline-allowed/> </information> <resources> <j2se version="1.4+"/> <jar href="helloJWS.jar"/> </resources> <application-desc main-class="HelloJWS"/> </jnlp> (web page) … <A href=“helloJWS.jnlp”> Start HelloJWS </A> … example HelloJWS.jar
Java 2 SDK Installation Instructions (for WIN32) 1. Download java 2 SDK standard edition 2. Run the Java 2 SDK executable (*.exe). • determine where to install j2se. (ex: c:\java\jdk5.0) • > set JAVA_HOME= c:\java\jdk5.0 3. Update the PATH variable • so that you can type ‘java’ instead of ‘c:\java\jdk5.0\bin\java’ to invoke java tools. • > path=%JAVA_HOME%\bin;%PATH% 4. Check the CLASSPATH variable • Used by java tools to determine where to find your personal (nonsystem) java class files • Types of java byte codes (class files): • System : java tools know where to find them. • Extensions: put in %JAVA_HOME%\jre\lib\ext • Personal: via CLASSPATH or –cp/–classpath options 5. Start using the Java 2 SDK tools! • java, javac, javadoc, jdb, javap,…
3. Creating Your First Applet a. Create a Java Source File: HelloJavaApplet.java import java.applet.*; import java.awt.*; /** * The HelloJavaApplet class implements an applet that * simply displays "Hello World!". */ public class HelloJavaApplet extends Applet { public void paint(Graphics g) { // Display "Hello Java Applet!" g.drawString("Hello world!", 50, 25); } }
b. Create an HTML file to contain the applet. <HTML> <HEAD> <TITLE>A Simple Program</TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="HelloJavaApplet.class" CODEBASE=“./applets/” WIDTH=250 HEIGHT=25> The applet does not work!</APPLET> </BODY> </HTML> • Save this code to a file called HelloJavaApplet.html.
c. Compile and run the program • Compile the Source File. • Javac HelloJavaApplet.java • Run the program: • With Appletviewer: • appleviewer HelloWorld • With IE explorer, Netscape: • double click HelloJavaApplet.html • demo