Thursday, 11 November 2010

Lập trình JAVA Desktop từ A tới Z - phần 3

Lập trình JAVA Desktop từ A tới Z - phần 3

Tiếp theo loạt bài về Lập trình JAVA Desktop từ A tới Z. Phần 3 Xây dựng ứng dụng Java Desktop.

Bước 6: Unit Test
Bước 7: Production test/System test (Bỏ qua vì Project quá tí hon)
Bước 8: Deploy (Xem mục Jar deploy)
Bước 9: Bàn giao và thu tiền (Nhường lại cho các bạn)

8. Pluggable Look and Feel

Vừa xây dựng ứng dụng xong, thấy vui vui, nhưng sao giao diện của ứng dụng Swing xấu quá. Vậy phen này chắc bỏ Java qua .NET quá!
Đừng nóng bạn ơi, Java hiểu điều đó nên hỗ trợ LookAndFeel cho bạn đây, đó là kỹ thuật thay đổi hình dạng và cách ứng xử của toàn ứng dụng ngay lúc Runtime, có người dịch là cảm quan, nghe khó hiểu quá. Thôi thì cứ gọi là ... LookAndFeel cho rồi.
Các bạn có thể tải hàng đống LookAndFeel tại http://javootoo.l2fprod.com/plaf/oyoaha/index.php
Thay đổi LookAndFeel chỉ đơn giản như sau:
 try {

UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");


//thay bằng LookAndFeel của bạn
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}


hay gọn gàng hơn
try {
UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");

//thay bằng LookAndFeel của bạn
} catch (Exception e) {
e.printStackTrace();
}

9. Jar deploy

Một khi đã xây dựng xong phần mềm thì phần mềm đó chỉ có LTV mới sử dụng được. Muốn phân phối đến end user, chúng ta phải có chương trình đóng gói, cài đặt cho họ.
Đối với các LTV VB, VC, .NET thì ít quan tâm điều này, vì IDE làm sẵn hết cho họ, họ chỉ việc nhấn nút Build và dùng chương trình Setup để deploy là xong, còn đối với Java thì khác. Tại sạo điều này khó thực hiện đối với Java? Vì Java là Platform Indepdent mà! Nó đâu biết dịch ra mã máy để chạy trên HĐH nào. (Vì có quá nhiều HĐH).
Giải pháp của Java là dịch ra mã trung gian, không phụ thuộc nền (các .class), sau đó nén các file này lại tạo thành file .jar
Có rất nhiều cách tạo ra file .jar, ở đây tôi giới thiệu cách đơn giản nhất là dùng WinRAR để nén các .class và các resources đi theo (Vì file .jar thực chất là file .zip)
Tuy nhiên để file jar có thể khởi động (double vào), giống như các chương trình Native code thì bạn phải thực hiện thêm bước nữa, đó là soạn file MANIFEST.MF, mục đích file này là mô tả cho file .jar thôi, cụ thể là nó cho biết Main Class là class nào. Nội dung của file này như sau:
Manifest-Version: 1.0
Created-By: 1.6.0-beta2 (Sun Microsystems Inc.)
Main-Class: com.pissoft.session1.EncodePasswordApp
SplashScreen-Image: java.jpg
Sau đó ta đặt file này vào thư mục META-INF, vậy cấu trúc thư mục trước khi nén như sau:
encrypt->tên project
com
| pissoft
| | session1
| | | EncryptApp.class
| | | EncryptFrame.class
| | | GridBagLayoutEx.class
MATA-INF
| | MANIFEST.MF
splashscreen.jpg
Đứng tại thư mục con của encrypt, dùng WinRAR, WinZip hoặc Zip của Windows XP cũng được
Nén các file và thư mục trên lại, chọn định dạng nén là ZIP (chọn RAR là đi bụi luôn đó)
Đặt tên file là encrypt.jar
Thế là xong, bạn có thể chạy bằng 3 cách:


  • Mở command line lên, gõ lệnh java -jar encrypt.jar -> End user không dám sử dụng cách này

  • Double click vào biểu tượng file encrypt.jar

  • Nếu cách 2 không thực hiện được, có nghĩa là định dạng file .jar mặc định không được mở bằng JVM, thì chọn giải pháp sau: right click lên file encrypt.jar, chọn open with .... và chỉ đến javaw.exe (trên windows) hoặc java (*nix)

Như thế là tạm được rồi, còn nếu muốn chuyên nghiệp hơn xin mời qua mục kế tiếp

10. Deploy with Setup application

Nếu muốn ứng dụng của mình chuyên nghiệp hơn hoặc ứng dụng quá phức tạp, phải đăng ký tùm lum thứ khi cài đặt thì khi đó phải nhờ đến chương trình đóng gói (Installer) chuyên nghiệp như: InstallAnywhere, iInstallShield, nstall4j, Advanced Installer for Java, JExpress, ...
Nhưng 1 điều đáng buồn là tất cả bọn chúng đều Commercial. Đành phải sử dụng crack thôi ... cũng may mắn là trong lúc crack, tình cờ tìm được 1 em Java Installer khá tốt, nhưng free và open source nữa, đó là IzPack.
IzPack để cho các bạn tự tìm hiểu nhé, Download tại http://www.izforge.com/izpack
Hình
Cài đặt JAVA Desktophttp://www.pissoft.com/javavietnam/articles/javadesktop/session1/setup.jpg />
Online Java Installer
http://www.pissoft.com/javavietnam/articles/javadesktop/session1/setup.jnlp
Nếu không chạy được thì download File này về chạy nhé
http://www.pissoft.com/javavietnam/articles/javadesktop/session1/setup.jar

11. Deploy Desktop Application qua web(Java Web Start)


Nhiều lúc bạn làm xong phần mềm, muốn mang lên mạng rao bán, nhưng nếu người ta không chạy thử thì không dám mua.
Vậy có cách nào cho ứng dụng Java Desktop chạy qua Web không? Cám ơn Sun, vì họ đã hỗ trợ Java Web Start giúp ta làm chuyện này.
Cách thực hiện đơn giản như sau:
a. Nén ứng dụng thành .jar (Jar deploy)
b. Viết file encrypt.jnlp, có nội dung như sau:
Encrypt app
Pissoft Open Source Software
Powerful Encrypt Application
c. Đặt file .jar, file encrypt.jnlp và các file, thư mục liên quan vào web server của bạn
d. AddType vào web server, với Apache, ta làm như sau:
AddType application/x-java-jnlp-file .jnlp
e. Viết trang HTML link đến file encrypt.jnlp
Tham khảo toàn bộ cấu trúc của file .jnlp tại:
http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html

12. FAQ: Câu hỏi thường gặp


 Q1: Thấy Layout cũng hay, nhưng trước giờ quen dùng VB rồi, có cách nào thực hiện tương tự trong Java không?
A: Có, bạn chọn "null" Layout
Q2: Tại sao phải code GUI, bộ java không có tools kéo thả giống VB sao?
A: Java có rất nhiều tools giúp kéo thả GUI, nhưng theo kinh nghiệm của tôi thì code vừa chính xác, vừa nhanh, dễ dàng kiểm soát code (Sau khi đọc xong phần 5 - Xây dựng Swing Framework riêng, bạn sẽ thấy code GUI cho Java sướng đến mức nào)
Q3: Tôi có thể dịch file .jar ra native code không?
A: Trên lý thuyết là được, nhưng không chắc ăn lắm. Giải pháp thông thường người ta chọn là dùng bộ phận khởi động bằng Native code để khởi động Java. Đây là 1 hình thức giả tạo thôi, chứ buộc cũng phải cài JVM mới chạy được.
JBuilder, và những chương trình Java Installer có chức năng này
Q4: Tại sao tôi thay đổi LookAndFeel cho ứng dụng dùng AWT, không thấy kết quả gì hết?
A: Vì LookAndFeel chỉ hỗ trợ cho Swing
Q5: Máy tôi không cài sẵn WinRAR vậy muốn deploy dạng file Jar thì phải làm sao?
A: Sử dụng lệnh jar của Java (Command line) hoặc Ant hoặc dùng các IDE: Eclipse, JBuilder, ...
Q6: Tại sao biểu tượng của file encrypt.jar trên máy tôi là biểu tưởng của WinRAR và khi double thì nó được mở bằng WinRAR
A: Điều này là do bạn cài đặt WinRAR sao khi cài Java, hay nói cách khác là WinRAR đang là chương trình mặc định mở file dạng .Jar. Để khắc phục chỉ đơn giản đăng ký chương trình mở file .jar mặc định là Java
Q7: Tôi muốn nén cái thư viện kèm theo (.jar) vào thành 1 file jar duy nhất được ko?
A: Được, bạn có thể dùng thủ công như sau:


  • Giải nén tất cả file thư viện (.jar)


  • Giải nén file .jar của chính ứng dụng


  • Đổ hết vào 1 thư mục, sau đó nén tất cả các file và thư mục này lại, ta được 1 file .jar duy nhất

No comments:

Post a Comment