Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Java Programming Introduction to Java Programming Cheng-Chia Chen Feburary 2013 Transparency No. 1-1 Java Programming Course web page Transparency No. 1-2 Java Programming Lecture 1. Introduction Cheng-Chia Chen Transparency No. 1-3 Java Programming Contents 1. 2. 3. 4. 5. What is Java? Features of Java Evolution of Java Develop first Java program Structure of java code Transparency No. 1-4 What is Java? Java Programming Java is a programming language, defined in The Java language specification (v1,v2,v3, se7) a virtual machine, Defined in The java virtual machine (v1, v2, se7) Many languages can be compiled into JVM code. Java code can also be compiled into non-jvm code: Android: java Dalvik VM a platform Standard edition (j2se 7.0 java se 7): Java platform, standard edition 7 Enterprise edition(j2ee 5.0 java ee 5): Java platform, enterprise edition 6 (for enterprise-class service-oriented architecture (SOA) and web applications.) Micro edition (j2me java me): Java Platform, Micro edition (for mobile&embeded devices) Transparency No. 1-5 servers & enterprise computers Java Programming Desktop & personal computers High-end consumer devices Low-end devices J2ME smartcards Java 2 Platform editions and their target markets Transparency No. 1-6 Java Programming Transparency No. 1-7 Java Programming Java SE 7 Platform at a Glance Java SE 6 Platform at a Glance Transparency No. 1-8 Java Programming Features of the java language: Java is simple object-oriented distributed interpreted robust secure architecture-neutral portable high performance multithreaded dynamic reference Transparency No. 1-9 Java Programming Java is Simple Intentionally created to be syntactically similar to C/C++ Eliminate traditionally troublesome features of C/C++ Pointer arithmetic (no troublesome * and &) Multiple inheritance Implicit type coercions // if (1) {x = 1 ;} is not well-formed Explicit memory management Preprocessor Eliminate features of C/C++ struct, typedef,union generic, enum (both recovered since jdk5.0) (Programmer controlled) operator overloading (but preserving method overloading) Features included as part of base language: Threads Exception handling reflection Transparency No. 1-10 Java Programming Java is Object-oriented Java is inherently object-oriented. Although many object-oriented languages began strictly as procedural languages, Java was designed from the start to be object-oriented. Object-oriented programming (OOP) is a popular programming approach that is replacing traditional procedural programming techniques. One of the central issues in software development is how to reuse code. Object-oriented programming provides great flexibility, modularity, clarity, and reusability through encapsulation( 封裝), inheritance(繼承), and polymorphism(多型). Transparency No. 1-11 Java Programming What is object-oriented ? Systems are built from sets of classes Classes are instantiated at runtime to give objects Objects communicate via messages passing (i.e., method or funcition invocation) (In java) everything is part of a class Supported OO Concepts: Data abstraction and Encapsulation Inheritance Polymorphism dynamic binding - overriding overloading Non-OO generics features Logical cluster of classes == package Transparency No. 1-12 Java Programming Java is a Distributed language Distributed computing involves several computers working together on a network. Java is designed to make distributed computing easy. Since networking capability is inherently integrated into Java, writing network programs is like sending and receiving data to and from a file. 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 Transparency No. 1-13 Java Programming Java is an Interpreted language Language implementation Compiler – produce machine code Ex: Fortran, Cobol, C, C++ Interpreter – execute source or compiled instructions on a virtual machine Ex: Scheme, Haskell, Python., Java Hybrid compilation/interpretation : Java The Java Virtual Machine (JVM) java code compile byte code (machine independent) [ just-in-time compilation native code ] execution We need an interpreter(JVM) to run Java programs. The bytecode is machine-independent and can be executed on any machine that has a Java interpreter, which is the Java Virtual Machine (JVM). Transparency No. 1-14 Java Programming Java is Robust characteristics of Java Strongly-typed language (cf Smalltalk and VisualBasic) Compile-time and runtime checking No pointer arithmetic Exception handling Automatic memory management Java compilers can detect many problems that would first show up at execution time in other languages. Java eliminated certain types of error-prone programming constructs found in other languages. Runtime exception-handling feature provides programming support for robustness. Transparency No. 1-15 Java Programming Java is secure Designed with security in mind. Java implements several security mechanisms to protect your system against harm caused by stray programs. 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!! A recent security flaw(2012/08) (0-day flaw) Should update (from 7~10) to se 7 update (11-15) now. One of the best mainstream platforms with the strongest security guarantee. Transparency No. 1-16 Java Programming Java is Architecture-neutral Byte-codes are architecture neutral Write once, run anywhere With a Java Virtual Machine (JVM), you can write one program that will run on any platform. Performance suffers somewhat by using bytecodes Transparency No. 1-17 Java Programming Java is portable (source code level) Source code : Primitive type sizes are explicit - not architecture dependent Strings and characters are (16-bit) Unicode compliant easier for internationalization. Byte code: run everywhere where a JVM is available User experience : 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) Transparency No. 1-18 Java Programming 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. Transparency No. 1-19 Java Programming 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 Issue: Still hard to use right for general programmers: New package java.util.concurrency and other extensions added since jdk5 allow easier and correct use of threads. Transparency No. 1-20 Java Programming 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 name = getSpecies(); // get a name of a class Object p = Class.forName(name).newInstance(); If(p instanceof Hen) {…} else if(p instanceof Coq) { …} else {… } Transparency No. 1-21 Java Programming 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!"); } } Transparency No. 1-22 Java Programming Early history of Java Green Project (1990) need a small PL for developing consumer device operating software Requirements: small size, robust, portable, extremely reliable ,realtime performance Oak // the resulting language Originally used C++, then realized a new language was needed Original requirements same as for current language Java (1993) // OAK was renamed Java Intended market never eventuated (no technology/product sold) 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 ( 211 classes / 8 pkgs) Early History Website : http://java.sun.com/features/1998/05/birthday.html(broken) Transparency No. 1-23 Java Programming Evolution of the Java Language • Java version History (8 packages) (23 packages) java 2 (59 packages) (76 packages) 2002 (135 packages) (166 packages) (202 packages) 7 2011-7/7 featureChange •Jan, 2010: sun and java were owned by oracle. Transparency No. 1-24 Java Programming Develop your first Java Program 1. Required software 2. Creating Your First Application a. Create a Java Source File b. Compile the Source File c. Run the Program Transparency No. 1-25 Java Programming Required Softwares To write your first program, you will need: 1. The Java Platform, Standard Edition. 2. A text editor. Ex: NotePad, Ultraedit, EditPlus2 Transparency No. 1-26 Java Programming 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 Transparency No. 1-27 Java Programming 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!"); } } Transparency No. 1-28 Java Programming Transparency No. 1-29 Java Programming Transparency No. 1-30 Java Programming Java Jargon Transparency No. 1-31 Java Programming Java 2 SDK Installation Instructions (for WIN32) 1. Download java SDK standard edition 2. Run the Java SDK executable (*.exe). determine where to install java se. (ex: c:\java\jdk7) > set JAVA_HOME= c:\java\jdk7 3. Update the PATH variable so that you can type ‘java’ instead of ‘c:\java\jdk7\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 SDK tools! java, javac, javadoc, jdb, javap,… Transparency No. 1-32 Java Programming Create Your first Java application using Eclipse IDE install Eclipse SDK Download Eclipse SDK (choose Classic) unzip to a dir (c://eclipse) Start Eclipse go to c:\eclipse run eclipse.exe choose Java perspective create a java project ( helloWorld ) create a package chapter1 using package widard create HelloWorld class using class wizard run HelloWorld class Reference: Eclipse Tutorial | One-Page Startup Instruction Transparency No. 1-33 Java Programming How java code are structured ? A java application consists of many packages Some from JRE (built-ins)+ some from 3rd party + your own ] A package consists of 0 or more classes 0 or more subpackages A java source file xxx.java is called a compilation unit, which may contain multiple java class definitions and may be compiled into multiple java byte code (***.class ). Transparency No. 1-34 Java Programming Package and class naming A class or package has two names: simpleName fully qualified name = parentPackageName . simpleName packageName = parentPackageName . simpleName For package, we use only its full name. Ex: java.lang.String javax.swing.JButton The package/subpackage/(*.class, *.java) structure is not only logically analogous to directory/ subdirectory/ file in OS file system but in fact they are stored physically in file system in this way. Namely, if package p is located in a directory d then subpackage p.q of p would be stored in subdirecty q of d, and class p.A of p would be stored in file named A.class or A.java. Transparency No. 1-35 CLASSPATH: Where to find java class and source Java Programming How does java/javac find a class or src x.y.z.A in the package x.y.z ? Notes: package x.y.z is a subpackage of x.y, which is a subpackage of x. we called package x, java, javax etc, top-level packages. java find the location of top-level packages from a list of directory(package roots) given by a system variable called CLASSPATH. Ex: If CLASSPATH = d:\my\root;. Then package x is mapped to dir d:\my\root\x or ./x package x.y is mapped to dir d:\my\root\x\y or ./x/y package x.y.z => d:\my\root\x\y\z or ./x/y/z class or src x.y.z.A => d:\my\root\x\y\z\A.class or d:\my\root\x\y\z\A.java or … Transparency No. 1-36