Economizar energia elétrica, beneficiar o meio ambiente com uma reciclagem direta sem qualquer processo industrial nos descartáveis, o projeto do aquecedor solar com recicláveis, tem como objetivo, conscientizar a todos de que todas as embalagens pós - consumo podem ter aplicação útil no lado social.
Economizar energia elétrica, beneficiar o meio ambiente com uma reciclagem direta sem qualquer processo industrial nos descartáveis, o projeto do aquecedor solar com recicláveis, tem como objetivo, conscientizar a todos de que todas as embalagens pós - consumo podem ter aplicação útil no lado social.
1. Chương 2: Nh p môn Java 23
Chương 2
NH P MÔN JAVA
M c tiêu
N m ư c các c trưng c a Java
Các lo i chương trình vi t b ng Java
Ð nh nghĩa v máy o Java (Java Virtual Machine)
Các n i dung c a JDK (Java Development Kit)
Sơ lư c các c trưng m i c a Java 2
2.1 Gi i thi u Java
Java là m t ngôn ng l p trình ư c Sun Microsystems gi i thi u vào tháng 6
năm 1995. T ó, nó ã tr thành m t công c l p trình c a các l p trình
viên chuyên nghi p. Java ư c xây d ng trên n n t ng c a C và C++. Do
v y nó s d ng các cú pháp c a C và các c trưng hư ng i tư ng c a
C++.
Vào năm 1991, m t nhóm các k sư c a Sun Microsystems có ý nh thi t k
m t ngôn ng l p trình i u khi n các thi t b i n t như Tivi, máy gi t,
lò nư ng, … M c dù C và C++ có kh năng làm vi c này nhưng trình biên
d ch l i ph thu c vào t ng lo i CPU.
Trình biên d ch thư ng ph i t n nhi u th i gian xây d ng nên r t t. Vì
v y m i lo i CPU có m t trình biên d ch riêng là r t t n kém. Do ó nhu
c u th c t òi h i m t ngôn ng ch y nhanh, g n, hi u qu và c l p thi t
b t c là có th ch y trên nhi u lo i CPU khác nhau, dư i các môi trư ng khác
nhau. “Oak” ã ra i và vào năm 1995 ư c i tên thành Java. M c dù m c
tiêu ban u không ph i cho Internet nhưng do c trưng không ph thu c
thi t b nên Java ã tr thành ngôn ng l p trình cho Internet.
2.1.1 Java là gì
Java là ngôn ng l p trình hư ng i tư ng, do v y không th dùng Java
vi t m t chương trình hư ng ch c năng. Java có th gi i quy t h u h t các
công vi c mà các ngôn ng khác có th làm ư c.
Java là ngôn ng v a biên d ch v a thông d ch. u tiên mã ngu n ư c biên
d ch b ng công c JAVAC chuy n thành d ng ByteCode. Sau ó ư c th c
thi trên t ng lo i máy c th nh chương trình thông d ch. M c tiêu c a các
nhà thi t k Java là cho phép ngư i l p trình vi t chương trình m t l n nhưng
có th ch y trên b t c ph n c ng c th .
Ngày nay, Java ư c s d ng r ng rãi vi t chương trình ch y trên
Internet. Nó là ngôn ng l p trình hư ng i tư ng c l p thi t b , không
ph thu c vào h i u hành. Nó không ch dùng vi t các ng d ng ch y
ơn l hay trong m ng mà còn xây d ng các trình i u khi n thi t b cho
i n tho i di ng, PDA, …
2.2 Các c trưng c a Java
2. 24 Core Java
ơn gi n
Hư ng i tư ng
c l p ph n c ng và h i u hành
M nh
B o m t
Phân tán
a lu ng
ng
2.2.1 ơn gi n
Nh ng ngư i thi t k mong mu n phát tri n m t ngôn ng d h c và quen
thu c v i a s ngư i l p trình. Do v y Java lo i b các c trưng ph c t p
c a C và C++ như thao tác con tr , thao tác nh nghĩa ch ng toán t
(operator overloading),… Java không s d ng l nh “goto” cũng như file
header (.h). C u trúc “struct” và “union” cũng ư c lo i b kh i Java.
2.2.2 Hư ng i tư ng
Java ư c thi t k xoay quanh mô hình hư ng i tư ng. Vì v y trong Java,
tiêu i m là d li u và các phương pháp thao tác lên d li u ó. D li u và
các phương pháp mô t tr ng thái và cách ng x c a m t i tư ng trong
Java.
2.2.3 c l p ph n c ng và h i u hành
ây là kh năng m t chương trình ư c vi t t i m t máy nhưng có th ch y
ư c b t kỳ âu. Chúng ư c th hi n m c mã ngu n và m c nh phân.
m c mã ngu n, ngư i l p trình c n mô t ki u cho m i bi n. Ki u d li u
trong Java nh t quán cho t t c các h i u hành và ph n c ng khác nhau.
Java có riêng m t thư vi n các l p cơ s . Vì v y chương trình Java ư c vi t
trên m t máy có th d ch và ch y trơn tru trên các lo i máy khác mà không
c n vi t l i.
Tính c l p m c nh phân, m t chương trình ã biên d ch có th ch y trên
nhi u n n (ph n c ng, h i u hành) khác mà không c n d ch l i mã ngu n.
Tuy v y c n có ph n m m máy o Java (s c p n ph n sau) ho t
ng như m t trình thông d ch t i máy th c thi.
H ình 2.1 Cách biên d ch truy n th ng
Macintosh
compiler
compiler
compiler
IBM
Sparc
3. Chương 2: Nh p môn Java 25
i v i các chương trình vi t b ng C, C++ ho c m t ngôn ng nào khác,
trình biên d ch s chuy n t p l nh thành mã máy (machine code),hay l nh
c a b vi x lý. Nh ng l nh này ph thu c vào CPU hi n t i trên máy b n.
Nên khi mu n ch y trên lo i CPU khác, chúng ta ph i biên d ch l i chương
trình. Hình 2.1 th hi n quá trình th c thi chương trình vi t b ng C++
trên các lo i máy khác nhau.
Hình 2.2 Quá trình th c thi chương trình vi t b ng Java trên các lo i máy
khác nhau.
Hình 2.2 D ch chương trình Java
Môi trư ng phát tri n c a Java ư c chia làm hai ph n: Trình biên d ch và
trình thông d ch. Không như C hay C++, trình biên d ch c a Java chuy n mã
ngu n thành d ng bytecode c l p v i ph n c ng mà có th ch y trên b t
kỳ CPU nào.
Nhưng th c thi chương trình dư i d ng bytecode, t i m i máy c n ph i có
trình thông d ch c a Java hay còn g i là máy o Java. Máy o Java chuy n
bytecode thành mã l nh mà CPU th c thi ư c.
2.2.4 M nh m
Java là ngôn ng yêu c u ch t ch v ki u d li u. Ph i khai báo ki u d li u
tư ng minh khi vi t chương trình. Java ki m tra lúc biên d ch và c trong th i
gian thông d ch vì v y Java lo i b m t m t s lo i l i l p trình nh t nh.
Java không s d ng con tr và các phép toán con tr . Java ki m tra t t c
các truy nh p n m ng, chu i khi th c thi m b o r ng các truy nh p
ó không ra ngoài gi i h n kích thư c. Java ki m tra s chuy n i ki u d
li u t d ng này sang d ng khác lúc th c thi.
Trong các môi trư ng l p trình truy n th ng, l p trình viên ph i t mình c p
phát b nh . Trư c khi chương trình k t thúc thì ph i t gi i phóng b nh ã
c p. V n n y sinh khi l p trình viên quên gi i phóng b nh ã xin c p
trư c ó. Trong chương trình Java, l p trình viên không ph i b n tâm n
vi c c p phát b nh . Qúa trình c p phát, gi i phóng ư c th c hi n t
ng, nh d ch v thu nh t nh ng i tư ng không còn s d ng n a
(garbage collection).
Cơ ch b y l i c a Java giúp ơn gi n hóa qúa trình x lý l i và h i ph c sau
Macintosh
Trình biên d ch
Bytecode
c l p n n
(Platform
independent)
Trình
thông
d ch
Java
(Java
Interpreter)
IBM
Sparc
4. 26 Core Java
l i.
2.2.5 B o m t
Viruses là nguyên nhân gây ra s lo l ng trong vi c s d ng máy tính. Trư c
khi có Java, các l p trình viên ph i quét virus các t p trư c khi t i v hay
th c hi n chúng. Thông thư ng vi c này cũng không lo i tr hoàn toàn virus.
Ngoài ra chương trình khi th c thi có kh năng tìm ki m và c các thông tin
nh y c m trên máy c a ngư i s d ng mà ngư i s d ng không h hay bi t.
Java cung c p m t môi trư ng qu n lý th c thi chương trình. Nó cho r ng
không có m t o n mã nào là an toàn c . Và vì v y Java không ch là ngôn
ng l p trình thu n tuý mà còn cung c p nhi u m c ki m soát tính an
toàn khi th c thi chương trình.
m c u tiên, d li u và các phương th c ư c óng gói bên trong l p.
Chúng ch ư c truy xu t thông qua các giao di n mà l p cung c p. Java
không h tr con tr vì v y không cho phép truy xu t b nh tr c ti p. Nó
cũng ngăn ch n không cho truy xu t thông tin bên ngoài kích thư c c a
m ng b ng k thu t tràn và cũng cung c p k thu t d n rác trong b nh .
Các c trưng này t o cho Java an toàn t i a và có kh năng cơ ng cao.
Trong l p th hai, trình biên d ch ki m soát m b o mã là an toàn, và
tuân theo các nguyên t c c a Java.
L p th ba ư c m b o b i trình thông d ch. Chúng ki m tra xem bytecode
có m b o các qui t c an toàn trư c khi th c thi.
L p th tư ki m soát vi c n p các l p vào b nh giám sát vi c vi ph m
gi i h n truy xu t trư c khi n p vào h th ng.
2.2.6 Phân tán
Java có th dùng xây d ng các ng d ng có th làm vi c trên nhi u ph n
c ng, h i u hành và giao di n h a. Java ư c thi t k h tr cho các
ng d ng ch y trên m ng. Vì v y chúng ư c s d ng r ng rãi như là công
c phát tri n trên Internet, nơi s d ng nhi u n n t ng khác nhau.
2.2.7 a lu ng
Chương trình Java a lu ng(Multithreading) th c thi các công vi c ng
th i. Chúng cũng cung c p gi i pháp ng b gi a các lu ng. c tính h tr
a này này cho phép xây d ng các ng d ng trên m ng ch y hi u qu .
2.2.8 ng
Java ư c thi t k như m t ngôn ng ng áp ng cho nh ng môi
trư ng m . Các chương trình Java ch a r t nhi u thông tin th c thi nh m
ki m soát và truy nh p i tư ng lúc ch . i u này cho phép kh năng liên
k t ng mã.
5. Chương 2: Nh p môn Java 27
2.3 Các ki u chương trình Java
Chúng ta có th xây d ng các lo i chương trình Java như sau:
2.3.1 Applets
Applet là chương trình ư c t o ra s d ng trên Internet thông qua các
trình duy t h tr Java như IE hay Netscape. B n có th dùng Java xây
d ng Applet. Applet ư c nhúng bên trong trang Web. Khi trang Web hi n th
trong trình duy t, Applet s ư c t i v và th c thi t i trình duy t.
2.3.2 ng d ng th c thi qua dòng l nh
Các chương trình này ch y t d u nh c l nh và không s d ng giao di n
h a. Các thông tin nh p xu t ư c th hi n t i d u nh c l nh.
2.3.3 ng d ng h a
ây là các chương trình Java ch y c l p cho phép ngư i dùng tương tác
qua giao di n h a.
2.3.4 Servlet
Java thích h p phát tri n ng d ng nhi u l p. Applet là chương trình
h a ch y trên trình duy t t i máy tr m. các ng d ng Web, máy tr m g i
yêu c u t i máy ch . Máy ch x lý và g i k t qu tr l i máy tr m. Các Java
API ch y trên máy ch ch u trách nhi m x lý t i máy ch và tr l i các yêu
c u c a máy tr m. Các Java API ch y trên máy ch này m r ng kh năng
c a các ng d ng Java API chu n. Các ng d ng trên máy ch này ư c g i
là các Servlet. ho c Applet t i máy ch . X lý Form c a HTML là cách s
d ng ơn gi n nh t c a Servlet. Chúng còn có th ư c dùng x lý d
li u, th c thi các giao d ch và thư ng ư c th c thi thông qua máy ch Web.
2.3.5 ng d ng cơ s d li u
Các ng d ng này s d ng JDBC API k t n i t i cơ s d li u. Chúng có
th là Applet hay ng d ng, nhưng Applet b gi i h n b i tính b o m t.
2.4 Máy o Java (JVM-Java Virtual Machine)
Máy o Java là trái tim c a ngôn ng Java. Môi trư ng Java bao g m năm
ph n t sau:
Ngôn ng
Ð nh nghĩa Bytecode
Các thư vi n l p Java/Sun
Máy o Java (JVM)
C u trúc c a file .class
Các ph n t t o cho Java thành công là
Ð nh nghĩa Bytecode
C u trúc c a file .class
Máy o Java (JVM)
Kh năng cơ ng c a file .class cho phép các chương trình Java vi t m t l n
nhưng ch y b t kỳ âu. Kh năng này có ư c nh s giúp c a máy o
Java.
6. 28 Core Java
2.4.1 Máy o Java là gì ?
Máy o là m t ph n m m d a trên cơ s máy tính o. Nó có t p h p các l nh
logic xác nh các ho t ng c a máy tính. Ngư i ta có th xem nó như
m t h i u hành thu nh . Nó thi t l p các l p tr u tư ng cho: Ph n c ng
bên dư i, h i u hành, mã ã biên d ch.
Trình biên d ch chuy n mã ngu n thành t p các l nh c a máy o mà không
ph thu c vào ph n c ng c th . Trình thông d ch trên m i máy s chuy n
t p l nh này thành chương trình th c thi. Máy o t o ra m t môi trư ng bên
trong th c thi các l nh b ng cách:
N p các file .class
Qu n lý b nh
D n “rác”
Vi c không nh t quán c a ph n c ng làm cho máy o ph i s d ng ngăn x p
lưu tr các thông tin sau:
Các “Frame” ch a các tr ng thái c a các phương th c.
Các toán h ng c a mã bytecode.
Các tham s truy n cho phương th c.
Các bi n c c b .
Khi JVM th c thi mã, m t thanh ghi c c b có tên “Program Counter” ư c
s d ng. Thanh ghi này tr t i l nh ang th c hi n. Khi c n thi t, có th thay
i n i dung thanh ghi i hư ng th c thi c a chương trình. Trong trư ng
h p thông thư ng thì t ng l nh m t n i ti p nhau s ư c th c thi.
M t khái ni m thông d ng khác trong Java là trình biên d ch “Just In Time-
JIT”. Các trình duy t thông d ng như Netscape hay IE u có JIT bên trong
tăng t c th c thi chương trình Java. M c ích chính c a JIT là chuy n
t p l nh bytecode thành mã máy c th cho t ng lo i CPU. Các l nh này s
ư c lưu tr và s d ng m i khi g i n.
2.4.2 Qu n lý b nh và d n rác
Trong C, C++ hay Pascal ngư i l p trình s d ng phương pháp tr c ti p
c p phát và thu h i b nh vùng “Heap”. Heap là vùng b nh l n ư c
phân chia cho t t c các lu ng.
qu n lý Heap, b nh ư c theo dõi qua các danh sách sau:
Danh sách các vùng nh chưa s d ng.
Danh sách các vùng ã c p.
Khi có m t yêu c u v c p phát b nh , h th ng xem xét trong danh sách
chưa c p phát l y ra kh i b nh u tiên có kích c sát nh t v i lư ng b
nh c n thi t . K thu t c p phát này gi m t i thi u vi c phân m nh c a
heap.
“Coalescing” là k thu t khác cũng gi m thi u vi c phân m nh c a heap
b ng cách gom l i các vùng nh chưa dùng li n nhau thành m t kh i l n
hơn. Còn k thu t s p x p l i các ph n ã dùng t o vùng nh chưa s
d ng l n hơn g i là “Compaction”.
Java s d ng hai heap riêng bi t cho c p phát vùng nh tĩnh và vùng nh
ng. M t heap (heap tĩnh) ch a các nh nghĩa v l p, các h ng và danh
sách các phương th c. Heap còn l i (heap ng) ư c chia làm hai ph n ư c
c p phát theo hai chi u ngư c nhau. M t bên ch a i tư ng còn m t bên
7. Chương 2: Nh p môn Java 29
ch a con tr tr n i tư ng ó.
“Handle” là c u trúc bao g m hai con tr . M t tr n b ng phương th c c a
i tư ng, con tr th hai tr n chính i tư ng ó. Chú ý r ng khi
“compaction” c n c p nh t l i giá tr con tr c a c u trúc “handle”.
Thu t toán d n rác có th áp d ng cho các i tư ng t trong heap ng.
Khi có yêu c u v b nh , trình qu n lý heap trư c tiên ki m tra danh sách
b nh chưa c p phát. N u không tìm th y kh i b nh nào phù h p (v kích
c ) thì trình d n rác s ư c kích ho t khi h th ng r i. Nhưng khi òi h i b
nh c p bách thì trình d n rác s ư c kích ho t ngay.
Trình d n rác g i phương th c finalize c a i tư ng trư c khi d n d p i
tư ng. Hàm này s d n d p các tài nguyên bên ngoài như các file ang m .
Công vi c này không ư c trình d n rác th c thi.
2.4.3 Quá trình ki m tra file .class
Vi c ki m tra ư c áp d ng cho t t c các file .class s p ư c n p lên b nh
m b o tính an toàn. Trình “Class Loader” s ki m tra t t c các file
.class không thu c h i u hành v i m c ích giám sát s tuân th các nghi
th c phát hi n các file .class có nguy cơ gây hư h ng n b nh , h
th ng file c c b , m ng ho c h i u hành. Quá trình ki m tra s xem xét
t ng th tính nguyên v n c a m t l p.
File .class bao g m ba ph n logic là:
Bytecode
Thông tin v Class như phương th c, giao di n và các giá tr h ng s
ư c t p h p trong quá trình biên d ch.
Các thu c tính v l p.
Các thông tin c a file .class ư c xem xét riêng r trong các b ng sau:
B ng Field ch a các thu c tính
B ng Method ch a các hàm c a class
B ng Interface và và các h ng s .
Quá trình ki m tra file .class ư c th c hi n b n m c:
M c u tiên th c hi n vi c ki m tra cú pháp m b o tính c u trúc
và tính toàn v n cú pháp c a file .class ư c n p.
M c th hai s xem xét file .class m b o các file này không vi
ph m các nguyên t c v s nh t quán ng nghĩa.
M c th ba s ki m tra bytecode. Trong bư c này s ki m tra s
thông s truy n vào phương th c, kh năng truy xu t sai ch s c a
m ng, chu i, bi u th c.
M c th tư s ki m tra trong th i gian th c thi giám sát các vi c
còn l i mà ba bư c trên chưa làm. Ví d như liên k t t i các l p khác
trong khi th c thi, hay ki m tra quy n truy xu t. N u m i i u th a
mãn, l p s ư c kh i t o.
2.5 B công c phát tri n JDK (Java Development Kit)
Sun Microsystem ưa ra ngôn ng l p trình Java qua s n ph m có tên là Java
Development Kit (JDK). Ba phiên b n chính là:
Java 1.0 - S d ng l n u vào năm 1995
Java 1.1 – Ðưa ra năm 1997 v I nhi u ưu i m hơn phiên b n trư c.
Java 2 – Phiên b n m i nh t
8. 30 Core Java
JDK bao g m Java Plug-In, chúng cho phép ch y tr c ti p Java Applet hay
JavaBean b ng cách dùng JRE thay cho s d ng môi trư ng th c thi m c
nh c a trình duy t.
JDK ch a các công c sau:
2.5.1 Trình biên d ch, 'javac'
Cú pháp:
javac [options] sourcecodename.java
2.5.2 Trình thông d ch, 'java'
Cú pháp:
java [options] classname
2.5.3 Trình d ch ngư c, 'javap'
javap d ch ngư c bytecode và in ra thông tin v các thu c tính (các trư ng),
các phương th c c a m t l p.
Cú pháp:
javap [options] classname
2.5.4 Công c sinh tài li u, 'javadoc'
Ti n ích này cho phép ta t o ra t p HTML d a trên các l i gi i thích trong mã
chương trình (ph n n m trong c p d u /*.... */).
Cú pháp:
javadoc [options] sourcecodename.java
2.5.5 Chương trình tìm l i - Debug, 'jdb‘
Cú pháp:
jdb [options] sourcecodename.java
hay
jdb -host -password [options] sourcecodename.java
2.5.6 Chương trình xem Applet , 'appletviewer‘
Cú pháp:
appletviewer [options] url
2.6 Java Core API
Nhân Java API ư c thay th b i phiên b n JFC 1.1.
M t s package thông d ng ư c:
2.6.1 java.lang
Ch a các l p quan tr ng nh t c a ngôn ng Java. Chúng bao g m các ki u
d li u cơ b n như ký t , s nguyên,… Chúng cũng ch a các l p làm nhi m
v x lý l i và các l p vào ra chu n. M t vài l p quan tr ng khác như String
hay StringBuffer.
2.6.2 java.applet
ây là package nh nh t ch a m t mình l p Applet. Các Applet nhúng trong
trang Web hay ch y trong appletviewer u th a k t l p này.
9. Chương 2: Nh p môn Java 31
2.6.3 java.awt
Package này ươ c g i là Abstract Window Toolkit (AWT). Chúng ch a các
l p dùng t o giao di n h a. M t s l p bên trong là: Button,
GridBagLayout, Graphics.
2.6.4 java.io
Cung c p thư vi n vào ra chu . Chúng cho phép t o và qu n lý dòng d li u
theo nhi u cách.
2.6.5 java.util
Package này cung c p m t s công c h u ích. M t vài l p c a package này
là: Date, Hashtable, Stack, Vector và StringTokenizer.
2.6.6 java.net
Cung c p kh năng giao ti p v i máy t xa. Cho phép t o và k t n i t i
Socket ho c URL.
2.6.7 java.awt.event
Ch a các l p, giao di n dùng x lý các s ki n trong chương trình như
chu t, bàn phím.
2.6.8 java.rmi
Công c g i hàm t xa. Chúng cho phép t o i tư ng trên máy khác và
s d ng các i tư ng ó trên máy c c b .
2.6.9 java.security
Cung c p các công c c n thi t mã hóa và m b o tính an toàn c a d
li u truy n gi a máy tr m và máy ch .
2.6.10 java.sql
Package này ch a Java DataBase Connectivity (JDBC), dùng truy xu t cơ
s d li u quan h như Oracle, SQL Server,....
2.7 Các c trưng m i c a Java 2
Các phiên b n trư c c a Java ch thích h p vi t các ng d ng nh trên
Web hơn là xây d ng các ng d ng ch y trên m ng m nhi m toàn b
các công vi c c a c a m t công ty ho c h th ng phân tán. Java 2 áp ng
yêu c u này. M t vài c trưng c a chúng là:
- Swing
ây là m t t p các l p và giao di n m i dùng t o giao di n ng d ng
h a "Look and Feel".
- Kéo và th
ây là kh năng di chuy n thông tin gi a các ng d ng hay các ph n khác
nhau c a chương trình.
- Java 2D API
Ch a t p h p các l p h tr cho nh và h a hai chi u.
- Java sound
T p h p hoàn toàn m i các l p c trưng v âm thanh c a Java.
- RMI
RMI (Remote Method Invocation) cho phép các ng d ng g i các phương
th c c a i tư ng t i máy khác và cho phép giao ti p v i chúng.
10. 32 Core Java
Tóm t t
Java là ngôn ng biên d ch và thông d ch
Các c trưng c a Java
ơn gi n
Hư ng i tư ng
c l p ph n c ng
M nh
B o m t
Phân tán
a lu ng
ng
Máy o Java
Java Development Kit
Các c trưng m i c a Java 2
Ki m tra s ti n b
1. B n có th vi t các chương trình d ng th t c b ng Java. úng/Sai
2. Java là ngôn ng có ki u d li u ch t ch . úng/Sai
3. ...........................là chương trình Java ch y c l p, và s d ng giao
di n h a ngư i s d ng nh p d li u.
4. ...........................s d ng JDBC API k t n i cơ s d li u.
5. ..........................hi u m t dòng các l nh máy tính tr u tư ng.
6. Coalescing và Compaction là gì?
7. L nh ............... ư c s d ng d ch file mã ngu n .java.
8. L p ......... ph i là l p cha c a các applet, applet là chương có th nhúng
vào trang Web hay ch y b ng Java AppletViewer.
Bài t p
1. Cài t Java 2
2. Gõ các l nh sau t i d u nh c và li t kê các tham s khác nhau c a chúng:
javac
java