Trước giờ trong các ngôn ngữ lập trình web mình chỉ biết mỗi PHP. Trong thế giới PHP thì Zend Framework quả là tuyệt vời, và việc sử dụng ZF khiến mình học hỏi được rất nhiều điều, nhất là mình thấy rõ về MVC và lợi ích của nó.
PHP đã ra phiên bản 5.3 và ZF cũng như Symfony đang chuẩn bị ra version 2.0 để sử dụng hết các ưu điểm của PHP 5.3. Đợi chờ ZF 2.0 hơi bị lâu mà vẫn chưa biết ngày phát hành sẽ là ngày nào, có lẽ là phải cuối năm. ZF 2.0 hứa hẹn sẽ có cải thiện lớn về tốc độ, hỗ trợ namespace, … Đọc một mớ so sánh giữa JSP và PHP, cũng không có ý định chuyển quả JSP. Nhưng tình cờ phát hiện Wiki của Zend – công ty bảo trợ cho PHP – sử dụng Java. Ặc, đến Zend cũng dùng Java thì mình cũng nên bỏ PHP mà đi 😀
Đợi thì hơi bị lâu, nhỉ. Tự dưng nhớ đến Java. Thực ra hầu hết những tính năng “mới” “tuyệt vời” của PHP đều đã có ở Java từ rất lâu rồi, và PHP (và cả .NET) chỉ vay mượn lại từ Java mà thôi. Vậy thì Java ắt phải trưởng thành hơn. Chưa kể namespace của PHP nhìn không thẩm mĩ (separator dùng trong khi các ngôn ngữ khác dùng .), cú pháp không đồng nhất, còn Java thì chuẩn vô cùng.
Thế là quyết định chuyển qua học Java thử xem. Java phức tạp thật. Mình cũng chỉ định học phần web với JSP của Java thôi, chứ không định học toàn bộ J2EE :D. Đọc gần xong cuốn Beginning JSP 2 – From Novice to Professional nên cũng hiểu được chút ít về JSP và Beans. Thử dùng Strut, làm theo 1 cái getting start thì thấy nhiều configuration quá, mất thời gian. Tìm hiểu thêm về framework khác thì Spring cũng tương tự. Wicket thì không thấy cấu trúc thư mục có Model (?). Tình cờ biết đến Play! framework, và khám phá ra rằng Play! framework khá giống với ZF, nhưng là pure Java. Tìm hiểu thêm thì biết được nó giống Ruby on Rails. Thử “play” với nó 1 chút thì thấy đây là 1 framework rất tuyệt vời. Namespaces nhìn rất “thẩm mỹ”. Netbeans hỗ trợ mọi thứ, như là VS với .NET vậy
Một điểm mình cũng thích ở Java là cú pháp rất chặt chẽ. Khi tạo ra 1 biến mới thì phải khai báo kiểu biến của nó, vd: String firstName, chứ không như PHP cứ đặt tên 1 biến rồi sau này gán cho nó giá trị gì cũng được. Sách Java cũng hay khuyến cáo về chuẩn đặt tên cho biến, hàm, hằng, lớp… còn lập trình viên PHP thì đặt tên khá tùy tiện (sau này ZF có coding convention khá ổn, cũng tương tự Java, chắc lấy cảm hứng từ Java).
Và PHP chỉ viết được web, còn Java viết được hầu như tất cả các loại ứng dụng: Web, Desktop, Mobile,…