Java Traditional “portability” (ideal)

Transcript

Java Traditional “portability” (ideal)
Programmazione 2 – 2002/2003
Università degli Studi di Trento
1
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Java
JAVA:
una introduzione
2
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Traditional “portability” (ideal)
C-code
Compiler
(Linux)
Compiler
(Pentium)
Compiler
(Mac)
Executable
(Linux)
Executable
(Win32)
Linux
Windows 32
Mac
Executable
(Mac)
1
1
Programmazione 2 – 2002/2003
Università degli Studi di Trento
3
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Portability of Java programs
Fac.Scienze – Università di Trento
Unix+JVM
Java-code
Compiler
(Unix)
Pentium +JVM
Compiler
(Pentium)
Bytecode
(Platform
independent)
Mac+JVM
Compiler
(Mac)
WRITE ONCE, RUN EVERYWHERE!
“Executable” files can be dowloaded through the net
But… Java version problem… Solve with a Plug-In
4
Java based
NETWORK COMPUTER
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Java - Introduction
Applications are built
in the frame of the
OPERATING SYSTEM
Which in turn is built over a
particular
HARDWARE
2
2
Programmazione 2 – 2002/2003
Università degli Studi di Trento
5
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Java - Introduction
Fac.Scienze – Università di Trento
Java defines a
HW-OS neutral
SOFTWARE
LAYER
on top of which
its code runs
6
Java Applications
Applications
JVM
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
The Java Virtual Machine
The Software Layer is called
Java Virtual Machine
It is a (smart) interpreter of an
assembly-like language called
ByteCode
3
3
Programmazione 2 – 2002/2003
Università degli Studi di Trento
7
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
The Java Virtual Machine
Fac.Scienze – Università di Trento
The Java Virtual Machine can:
be an application
live inside an application (e.g. a Browser)
live inside the Operating System (e.g.
JavaOS)
8
Programmazione 2 - Marco Ronchetti
Cos’e’ un eseguibile Java?
Fac.Scienze – Università di Trento
E’ un codice “ByteCode”: istruzioni (assembler) di una
macchina virtuale (Java Virtual Machine).
Non esiste un processore con bytecode ad hardware!
(Sun lo aveva annunciato)
Il “Java processor” viene emulato via software.
Il bytecode viene “interpretato”, o eseguito da “Just In Time”
Compilers.
4
4
Programmazione 2 – 2002/2003
Università degli Studi di Trento
9
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Esecutori di bytecode
Fac.Scienze – Università di Trento
Java può essere eseguito:
•come standalone program
da interpreti java (o compilatori JIT, o Java Chips)
•come “applet”:
da browsers Web:
da applicativi ad hoc:
•come “add-on module”:
da server Web
da application server (Enterprise Java Beans)
10
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Applicazioni
Definizione:
Programmi stand-alone scritti in linguaggio Java.
Possono essere eseguiti da una Java Virtual Machine:
Fisica: un processore il cui assembler e’ il bytecode
Virtuale: un interprete o Just In Time Compiler Java.
5
5
Programmazione 2 – 2002/2003
Università degli Studi di Trento
11
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Hello World (application)
Fac.Scienze – Università di Trento
Lo schema MINIMO di ogni applicazione é:
class HelloWorld {
/* Hello World, my first Java application */
public static void main (String args[]) {
System.out.println("Hello World!");
// qui va il resto del programma principale
}
}
12
Programmazione 2 - Marco Ronchetti
Hello World (application)
Fac.Scienze – Università di Trento
Lo schema CONSIGLIATO di ogni applicazione é:
class Applicazione{
/* Hello World, my first Java application - second version*/
public static void main (String args[]) {
Applicazione p= new Applicazione();
}
Applicazione() {
System.out.println("Hello World!");
// qui va il resto del programma principale
}
}
6
6
Programmazione 2 – 2002/2003
Università degli Studi di Trento
13
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Uso di JDK
Compilazione:
Obbligatorio
specificare
l’estensione!
Fac.Scienze – Università di Trento
$javac HelloWorld.java
produce HelloWorld.class
(in realtà: un file class per ogni classe contenuta nel
sorgente)
Esecuzione…
$java HelloWorld
Obbligatorio
omettere
l’estensione!
(la classe indicata deve contenere il main)
14
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Basic tools
http://www.java.sun.com/j2se/
JavaTM 2 Platform, Standard Edition (J2SETM)
The essential Java 2 SDK, tools, runtimes, and APIs for
developers writing, deploying, and running applets and
applications in the Java programming language. Also includes
earlier Java Development Kit versions JDKTM 1.1 and JRE 1.1
7
7
Programmazione 2 – 2002/2003
Università degli Studi di Trento
15
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Advanced development tool
http://www.borland.com/products/downloads/download_jbuilder.html
Personal edition is free
16
Programmazione 2 - Marco Ronchetti
Advanced development tool
Fac.Scienze – Università di Trento
Sun[tm] ONE Studio 4
update 1
Sun[tm] ONE Studio 4 update 1 is the latest release
in the Sun ONE Studio line of Integrated
Development Environments (IDEs) for Java[tm]
technology developers. Based on the NetBeans[tm]
Tools Platform, Sun ONE Studio software
continues to drive the market forward by providing
the latest support for Java and Industry Standards
in the development of enterprise class applications
and Web services.
http://wwws.sun.com/software/sundev/jde/index.html
Community edition is free
8
8
Programmazione 2 – 2002/2003
Università degli Studi di Trento
17
Marco Ronchetti
Lezione 6
Programmazione 2 - Marco Ronchetti
Advanced development tool
Fac.Scienze – Università di Trento
Eclipse Project
jdt
java development tools
subproject
http://www.eclipse.org/jdt/index.html
free
18
Programmazione 2 - Marco Ronchetti
Fac.Scienze – Università di Trento
Why Java? A safer language
A clean object-oriented programming
language
No pointer arithmetic
Automatic Memory Management
(Garbage Collection)
Automatic array and string bounds
check
9
9