Friday, January 7, 2011

Các thủ thuật Java

Gần đây tôi có đọc một cuốn sách về các thủ thuật Java có tên là: Effective Java. Tác giả cuốn sách lập luận rằng việc học Java từ các giáo trình truyền thống không thể đưa đến việc sử dụng Java một cách hiệu quả. Trái lại, có những mẹo, thủ thuật lập trình chỉ có thể có được sau nhiều năm kinh nghiệm sử dụng Java. Trong cuốn sách tác giả liệt kê khỏang 50 thủ thuật khác nhau phân theo nhiều nhóm: khởi tạo đối tượng, thread...

Tuy nhiên có một số thủ thuật khác mà theo cảm nghĩ của tôi có ích cho lập trình viên Java.

1. Dùng scanInterval khi sử dụng maven
ScanInterval giúp lập trình viên không phải restart lại mỗi khi thực hiện thay đổi trên file java. Tính năng này cũng tương tự như jRebel (commercial) nhưng lại hòan tòan có sẵn

2. Dùng Tomcat trong Eclipse
Việc này cũng có hiệu quả tương tự như dùng scanInterval trong maven vì Tomcat sẽ scan những thay đổi trong project và reupload những thay đổi này.

3. Remote debugger
Một ứng dụng không chạy trong eclipse nhưng vẫn có thể gọi debug trên eclipse. Tuyệt vời

4. Dùng netbean thay vì eclipse. Các ưu điểm của eclipse như gọn nhẹ, nhiều plugin hỗ trợ mọi người đều đã biết. Tuy vậy, để start 1 ứng dụng EJB trên eclipse thì quả thật phiền phức.

EJB được hỗ trợ tuyệt vời trên netbean với glassfish tích hợp. Bộ tài liệu tham khảo và các ví dụ giúp cho "tay mơ" nhất có thể làm quen với EJB dễ dàng.

Hơn thế nữa netbean hỗ trợ lập trình J2ME và PHP cũng rất tuyệt.

5. Security cho ứng dụng web
Hiện tại có 3 cách để hiện thực security cho 1 ứng dụng web:
- In house
- Web server security framework
- Spring security

Nguyên lý giản dị của security là kiểm tra xem người dùng hiện đang đăng nhập có hợp lệ không (authentication), và có đủ quyền để thực thi 1 chức năng nào đó không (authorization).
Để thực hiện điều này, ta chỉ cần chen 1 đọan code xác minh quyền và kiểm tra quyền. Đọan code này sẽ đọc thông tin của user đã đăng nhập từ trong biến session.

Như vậy tự xây dựng cơ chế security cho ứng dụng là đơn giản và dễ dàng hơn rất nhiều so với sử dụng 1 framework như Spring security hoặc là 1 web server. Tuy nhiên cách làm này bị cho là không decouple 2 logic khác nhau: xác thực quyền và thao tác nghiệp vụ. May mắn thay, servlet cung cấp 1 cơ chế tuyệt vời cho security đó là Servlet Filter. Xem blog sau để biết chi tiết: http://www.developer.com/security/article.php/3467801/Securing-J2EE-Applications-with-a-Servlet-Filter.htm