JP SS 5 podstawy Java (3)


Języki Programowania
Podstawy Java. Maszyny wirtualne.
Kompilacja
żð Kompilator tÅ‚umaczy program zapisany w jÄ™zyku
wysokiego poziomu na język maszynowy
my_prog.c
my_prog.exe
program wykonywalny
2
1
Kompilacja i platformy
żð Każda platforma (procesor + system operacyjny) ma wÅ‚asne unikatowe
wymagania odnośnie postaci kodu programu wykonalnego
żð Dla n jÄ™zyków i m platform potrzebne jest n ´ð m kompilatorów
PC + UNIX
PC + Windows
PC + MacOS
3
Maszyna wirtualna (VM)
żð Maszyna wirtualna (VM % virtual machine) jest hipotetycznym
(wirtualnym) komputerem
żð VM można uruchomić na dowolnym rzeczywistym komputerze jako
symulator (emulator)
żð JÄ™zyk maszyny wirtualnej jest jÄ™zykiem poÅ›redniczÄ…cym miÄ™dzy
oprogramowaniem a rzeczywistym komputerem. Zapis programu w
tym języku nosi nazwę bytecode
żð Dla dowolnego jÄ™zyka wystarczy tylko jeden kompilator tego jÄ™zyka
na język VM
4
2
Koncepcja VM
żð Niezależnie od liczby platform, dla n jÄ™zyków potrzeba n
kompilatorów
PC + UNIX
PC + Windows
Maszyna wirtualna  VM
PC + MacOS
5
Wady koncepcji VM
żð Utrata efektywnoÅ›ci
żð StosujÄ…c wspólnÄ… maszynÄ™ wirtualnÄ… VM dla różnych platform sprzÄ™towych nie
można wykorzystać w pełni jej unikatowych cech przyspieszających wykonanie
niektórych operacji
żð akceleratory graficzne
żð operacje DSP ...
żð Sprowadzenie zapisu programu do zunifikowanego bytecode prowadzi do utraty
efektywności języków w zakresie pewnych konstrukcji programistycznych
żð rekursja itp..
żð Idealna maszyna wirtualna w praktyce nie istnieje
żð W praktyce decydujÄ…c siÄ™ na okreÅ›lonÄ… VM dokonuje siÄ™ kompromisu, godzÄ…c
się na utratę efektywności
żð StÄ…d szybkość programów interpretowanych przez VM jest zwykle mniejsza od
szybkości programów kompilowanych bezpośrednio na daną platformę
żð programy napisane w jÄ™zyku Java sÄ… wolniejsze od programów napisanych w jÄ™zyku
C/C++
6
3
JVM  wirtualna maszyna Java
żð Maszyna wirtualna Java (Java Runtime Engine) jest dostÄ™pna dla niemal
wszystkich platform
żð JVM dla Windows to java.exe
PC + UNIX
Java
PC + Windows
Maszyna wirtualna Java
JVM
PC + MacOS
7
Maszyny wirtualne
żð Maszyny wirtualne
żð dla jednego jÄ™zyka
żð wielu platform
były znane już wcześniej, ale nie zdobyły większej popularności
żð Najbardziej dojrzaÅ‚e rozwiÄ…zania wczeÅ›niejszych VM to
żð Pascal: p-Machine (poÅ‚owa lat 80-tych XX w.)
żð Smalltalk: Smalltalk Bytecode Interpreter
żð Prolog: WAM
żð Smalltalk 80 może być uważany za protoplastÄ™ jÄ™zyka Java. Rynek
nie był w roku 1980 przygotowany na taką ideę. Smalltalk
wyprzedził swój czas o ponad 20 lat
8
4
Wielojęzyczne JVM
żð Współczesne implementacje JVM sÄ… zdolne do interpretacji bytecode
generowanego przez różne języki
9
Kompilacja programu Java
żð Program zródÅ‚owy z rozszerzeniem .java jest kompilowany przez
kompilator javac na plik o tej samej nazwie, ale z rozszerzeniem .class
żð Plik ten zawiera bytecode dla JVM
Hello.java Hello.class
Source code
Hello.java
Hello.class
10
5
Wykonanie programu Java
żð Bytecode jest wykonywany przez JVM
żð Bytecode może również pochodzić z innych kompilatorów, np.. JPython,
JBasic lub Smalltalk/JVM
Hello.class
Hello
Hello.class
11
JDK  główne elementy
Kompilator Java
Narzędzia dokumentacji
Java Virtual Machine
javac.exe
javadoc.exe
java.exe
12
6
Åšrodowisko JDK / DOS
żð Utworzyć program zródÅ‚owy
public class hello{
hello.java
public static void
main(String[] args)
żð W linii poleceÅ„ DOS wywoÅ‚ać
{ System.out.println
kompilator javac i skompilować
program hello.java ("Hello World"); }
}
żð Powstanie bytecode o nazwie
hello.class
C:>javac hello.java
żð Uruchomić program w JVM
C:>java hello
Hello World
13
Åšrodowisko JDK / Windows
żð Utworzyć program zródÅ‚owy
hello.java
żð WywoÅ‚ać konsolÄ™ cmd
żð WywoÅ‚ać kompilator
>javac hello.java
Powstanie bytecode o nazwie
hello.class
żð Uruchomić program w JVM
>java hello
żð Na konsoli
pojawi siÄ™
tekst
Hello World
14
7
Åšrodowisko JDK / Windows
żð Metoda pisania, kompilowania i uruchamiania programów podana na
poprzednim slajdzie działa, ale jest anachroniczna
żð DziÅ› nie posÅ‚ugujemy siÄ™ już liniÄ… poleceÅ„, bo jest to niewygodne
żð Stosuje siÄ™ specjalnie zaprojektowane graficzne Å›rodowiska uruchomieniowe
żð Interaktywne, graficzne Å›rodowiska uruchomieniowe dla jÄ™zyka Java
żð JBuilder (Borland)
żð NetBeans (Sun Microsystems)
żð Swing  do budowy GUI
żð Eclipse
żð ZaletÄ… (ale też i wadÄ…) wymienionych narzÄ™dzi jest bogactwo opcji, funkcji
żð Nauka jest dÅ‚uga i żmudna
żð Dokumentacja jest bardzo obszerna
żð Dlatego opracowano uproszczone Å›rodowiska uruchomieniowe, przeznaczone
głównie do celów dydaktycznych
żð BlueJ (University of Kent, Deakin University)
żð jGRASP
15
8


Wyszukiwarka