420 likes | 677 Views
Introduction to Java Programming. Cheng-Chia Chen September 2003. Course web page. Course information. Textbook: None Main References: The Java Tutorial From Sun Java 2 SDK, Standard Edition Version 1.4 Documentation ) The Java Language Specification
E N D
Introduction to Java Programming Cheng-Chia Chen September 2003
Course information • Textbook: None • Main References: • The Java Tutorial From Sun • Java 2 SDK, Standard Edition Version 1.4 Documentation ) • The Java Language Specification • Java in a Nutshell 3rd edition,David Flanagan,Oreilly, 1999. • References and Documentations: • The Java Virtual Machine • http://developer.java.sun.com/developer/onlineTraining/ • …
Course information (cont’d) • Some Development Tools and IDEs: • Java 2 SDK Version 1.4.2 (free) • BeanShell (free) • Eclipse (free open source IDE) • NetBeans (free open source Java IDE) • Borland Builder Foundation Version 9 (free) • JEditor • JPad • … • Grading: • 4~5 Programming Exercises (40 %) • A Java Application/System Study report (15~20 %) • Final Examination (30%) • Class Participation (10~15%)
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 (jdk): • Jdk v1.0~1.02: 8 packages/212 classes • jdk v1.1~1.18: 23 packages/504 classes • Java 2 (j2se): SDK v1.2~1.22, v1.30: 59 pkg/1520 classes • now v1.4.2 • Enterprise edition(j2ee): V1.2, V1.3.1, V1.4beta (Sep,2003) • Micro edition (j2me): v1.0,CLDC1.1,MIDP2.0,…
servers & enterprise coputers Desktop & personal computers High-end consumer devices Low-end devices J2ME smartcards Java 2 Platform editions and their target markets
What is J2EE ? • 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. A unified platform for building, deploying and managing enterprise-class software. 2. Allow enterprise-class application the ability to run anywhere. 3. A platform with a complete range of readily available enterprise-class services. 4. A single easy-to-learn blueprint programming model for J2EE. 5. A platform that is built upon and leverages existing IT investments and guarantees that enterprise-class software will work on multiple platforms.
Technologies included in J2EE • Enterprise JavaBeans, • JavaServer Pages, JavaServer Faces • servlets, • the Java Naming and Directory InterfaceTM (JNDI), • the Java Transaction API (JTA), • CORBA, • The JDBC data access API. • Java Message Queue (JMQ) • …
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 • (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
History of Java • 1997 … • 2/18: Complete JDK1.1 released • 3/28: JDK1.1.1, 5/28: JDK1.1.2, 7/2: JDK1.1.3,… • 1998: • 9/28: JDK1.1.7, • 12/8: J2SE • 1999: • 6/? J2ME • 12/7 J2EE • 2001 • J2SE 1.4.0 • Now(2003 Sep.): j2se1.4.2, j2ee 1.3.1,1.4 beta, …
Develop your first Java Program and applet 1. Required softwares 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\j2se\1.4) • > set JAVA_HOME= c:\java\j2se\1.4 3. Update the PATH variable • so that you can type ‘java’ instead of ‘c:\java\j2se\1.4\bin\java’ to invoke javatools. • > 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 LASSPATH 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