380 likes | 565 Vues
Introduction to Java Programming. Cheng-Chia Chen September 2002. 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 2002
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: • Java Foundation class in a Nutshell, by David Flanagan, Oreilly, 1999. • 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 (free) • BeanShell (free) • IBM VisualAge for java (free for entry edition) • Kawa IDE (30 days trial) • Forte For Java (free for CE) • Borland Builder Foundation Version 5 (free) • JPad (30 days trial) • … • 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 • Develop first Java applet
What is Java? Java is • a programming langugae, • 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.1 • Enterprise edition(j2ee): V1.2, V1.3.1 (Sep,2002) • Micro edition (j2me): v1.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, • 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) • 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 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(2002 Sep.): j2se1.4.1, j2ee
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 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: • Create a Java source file. • > Notepad HelloWorldApp.java • Compile the source file into a bytecode file. • > javac HelloWorldApp.java • Run the program contained in the bytecode file. • >java HelloWorldApp
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!"); } }
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.3) • > set JAVA_HOME= c:\java\j2se\1.3 3. Update the PATH variable • so that you can type ‘java’ instead of ‘c:\java\j2se\1.3\bin\java’ to invoke javatools. • > path=%JAVA_HOME%\bin;%PATH% 4. Check the CLASSPATH variable • Used by javatools to determine where to find your personal (nonsystem) java class files • Types of java bytecodes (class files): • System : javatools 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: HelloWorld.java import java.applet.*; import java.awt.*; /** * The HelloWorld class implements an applet that * simply displays "Hello World!". */ public class HelloWorld extends Applet { public void paint(Graphics g) { // Display "Hello World!" g.drawString("Hello world!", 50, 25); } }
2. Create an HTML file to cntain the applet. <HTML> <HEAD> <TITLE>A Simple Program</TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> The applet does not work!</APPLET> </BODY> </HTML> • Save this code to a file called Hello.html.
3. Compile and run the program • Compile the Source File. • Javac HelloWorld.java • Run the program: • With Appletviewer: • appleviewer HelloWorld • With IE explorer: • With Netscape: