Kể từ khi JAVA được công bố chính thức từ năm 1995, nó đã thay đổi rất nhiều cái nhìn của chúng ta về Hệ Điều hành. Bill Gate đã từng nói đùa rằng, nó – Hệ Điều hành – không phải là phần cứng mà là phần mềm, là tương lai. (It was not about the hardware but the software which will be the future). Một thập kỷ sau, John Gage (thành viên thứ năm của SUN) đã nói, “Mạng là máy tính” (The Network is the Computer). Và điều này đã nhanh chóng được chứng minh trong thế kỷ 21 này. Tuy nhiên, JAVA đã được xây dựng không phụ thuộc vào Hệ Điều hành và được triển khai qua mạng. JAVA với công nghệ Applet đã khai sinh cho những Ứng dụng Mạng Giàu Tương tác (Rich Network Application hay còn gọi là Rich Internet Application – RIA). JAVA không hoàn hảo và chúng ta liên tục có những bản phát hành khác nhau, tuy nhiên JAVA đã khai sinh một ngôn ngữ lập trình cực kỳ phổ biến.
Trở lại với nội dung bài viết, tác giả Armel Nene (Senior Java developer với kinh nghiệm làm việc trong lĩnh vực tài chính như Barclays, SMBC và công nghiệp game) muốn nhấn mạnh vào những gì mà mọi lập trình viên Java nên biết dù kinh nghiệm của họ có tới đâu đi chăng nữa và cũng không tin rằng một người với kinh nghiệm 5 năm thì không thể bằng một người có kinh nghiệm 10 năm. Mỗi người đều có một phương pháp làm việc tuy nhiên với một người lập trình viên, bạn luôn luôn phải đồng hành cùng công nghệ. Sau đây là 10 điều mà tác giả nghĩ là quan trọng hàng đầu đối với lập trình viên Java.
1. Ghi nhớ những vấn đề căn bản của JAVA và OOP (Remember the basic of JAVA language and OOP paradigm)
Hầu hết mọi LTV chuyên nghiệp dường như quên mất những nguyên lý của mỗi
ngôn ngữ. Nói như vậy, không có nghĩa là họ không giỏi, tuy nhiên liệu
họ có thể giải thích cho một lập trình viên ít kinh nghiệm tại sao họ sử
dụng “interfaces” thay vì sử dụng các “abstract classes” hay tại sao
ứng dụng một “pattern” lên một cái khác. Một lập trình viên thường rất
kiêu ngạo vì tin rằng họ đã code “đẹp” nhất, tuy nhiên thực tế là mọi
người làm việc theo nhóm với kỹ năng và kinh nghiệm khác nhau. Một điều
quan trọng nữa là bạn có thể backup đối với các thao tác cũng như đối
với mã nguồn. Một câu hỏi rất đơn giản tựa như khi nào nên sử dụng một
“String object” thay vì “StringBuilder” hoặc “StringBuffer”. Có thể, bạn
nhận thấy nó khá dễ dàng tuy nhiên làm cách nào để truyền đạt cho người
khác hiểu.
2. Hiểu biết về tầng công nghệ của mình (Know your technology stack)
Mọi lập trình viên đều phải biết về tầng công nghệ của mình. Điều này có
nghĩa là gì? JAVA không giống như những ngôn ngữ khác, JAVA có các tập
hợp con như công nghệ J2ME và các tập hợp phía trên như công nghệ Java
EE. Chúng ta có kinh nghiệm trong một lĩnh vực nhưng cũng thật quan
trọng khi nắm được sự khác biệt giữa các công nghệ của JAVA. Những câu
hỏi căn bản như sự khác biệt giữa SWING, Applet, Servlets, EJBs hay như
JAVAFX sẽ giúp bạn thêm tự tin. Hầu hết các lập trình viên không biết
làm cách nào để điều chỉnh JVM và sự khác biệt giữa môi trường JRE và
SDK. Bạn có biết tại sao phải cần cài đặt SDK để chạy Tomcat nhưng chỉ
cần JRE để chạy một ứng dụng?
3. Thử nghiệm với nhiều framework khác nhau Java EE (Experiment with various Java EE framework)
Mặc dù không đòi hỏi bạn phải là chuyên gia trong từng framework của
Java EE, nhưng nó sẽ tạo ra điểm khác biệt nếu bạn đã quen thuộc với
Spring hay EJB. Đó thực sự là một yếu tố mang tính cốt lõi mà CVs của
mọi lập trình viên nên có. Lập trình viên cũng nên biết về sự khác biệt
giữa Java EE 5 (và sắp tới là Java EE 6) với Spring. Hibernate cũng thật
sự rất cần thiết để truy cập dữ liệu tuy nhiên mọi người đã có thể
chuyển sang sử dụng JPA. Hibernate cũng tuân theo JPA và do đó không có
sự bào chữa nào ở đây cả.
4. Hiểu biết về một ngôn ngữ kịch bản (Know a scripting language)
JAVA có thể là quá nặng nề đối với một số tác vụ đơn giản mà có thể được
thực hiện bằng các ngôn ngữ động đơn giản như Python, Perl hay các loại
khác. Thực sự, các lập trình viên nên tìm hiểu về ngôn ngữ kịch bản
tương ứng mà hệ điều hành mục tiêu cung cập thư viện (shell script).
5. Hiểu biết về cách thức phát triển các dịch vụ web (Know how to develop web services)
Mạng là máy tính, do đó thật sự quan trọng khi hiểu biết về sự khác biệt
giữa các framework về web services hiện có. Dữ liệu đã được gom lại nhờ
các web services và hướng các services của bạn tới “cloud”. Các lập
trình viên SWING có thể sẽ không phát triển các web services nhưng chắc
chắn họ sẽ được kết nối với dữ liệu thông qua các web services. Hiểu về
sự khác biệt giữa các dạng chuẩn SOAP hay phi chuẩn ReST sẽ giúp lựa
chọn ra cái phù hợp cho web services.
6. Biết được làm cách nào và khi nào sử dụng đa luồng cho ứng dụng (Know how and when to multithread your application)
“À, tôi phải đăt nó đúng ở chỗ đó!”. Các lập trình viên nên biết khi nào
và tại sao phải đa luồng hóa một ứng dụng, một luồng thông tin nhiều
chiều (inter-communication) hay luồng giám sát. Mọi lập trình viên, dù
ít kinh nghiệm hay không cũng đều nên biết cách viết một ứng dụng đa
luồng.
7. Triển khai Cơ sở dữ liệu sử dụng JDBC và JPA (Database development using JDBC and JPA)
Đây đã là nguyên tắc bất di bất dịch của việc quy trình phát triển. Mọi
LTV đều nên biết cách viết các câu truy vấn SQL và cách tạo Cơ sở dữ
liệu. Mọi ứng dụng doanh nghiệp đều lưu trữ dữ liệu trong một Hệ Quản
trị CSDL quan hệ và đó chính là điều cực kỳ quan trọng mà những kiến
thức này trở thành một điều kiện tiên quyết thứ hai. Java EE đã giới
thiệu JPA (JDO đã được giới thiệu trước đó) những không phải là có thể
ứng dụng được trong mọi tình huống. Do vậy, hiểu được điểm khác biệt và
biết được khi nào thì sử dụng cái này thay cho cái kia thì hết sức quan
trọng.
8. Biết một ngôn ngữ kịch bản phía client và AJAX là gì (Know a client script languague and what is AJAX)
Mạng là máy tính và Internet là nền tảng triển khai. Java EE và các
frameworks khác giữ vai trò thực thi phía server có thể tạo ra thêm các
“tải” (load) cho server. Nếu bạn muốn chuyển sang một hệ thống mây
(cloud-based system) nơi mà nhà cung cấp tính tiền mỗi tài nguyên mà bạn
dùng, vậy tại sao không chuyển việc tính toán sang phía client. AJAX đã
gây ra một chấn động lớn vào thời điểm 3 năm trước dù nó không phải là
một công nghệ nhưng lại là một cách thức mới để thực hiện các tác vụ đã
có sẳn trước đó. Có vô số các AJAX framework dựa trên nền tảng JAVA như
GWT hay DWR, những cái mà giúp LTV dễ dàng phát triển các ứng dụng AJAX.
Bên cạnh đó, LTV cũng nên biết về nguyên lý của nó
9. Biết được đối thủ cạnh tranh và không tham gia vào các cuộc thảo luận kiểu như “Đâu là IDE tốt nhất” (Know your competitors and do not take part in “what is the best IDE” discusstion)
JAVA không phải là ngôn ngữ duy nhất có thể làm được thứ nó làm. Tuy
nhiên, JAVA có lẽ trưởng thành và hoàn thiện hơn so với các ngôn ngữ
khác. Hiểu được điểm khác biệt giữa JAVA và .NET hay JAVA và Ruby là một
sự trang bị hết sức đáng giá. Bạn cũng cần phải biết khi nào và tại sao
lại sử dụng cái này thay cho cái kia, và xin đừng bao giờ tham gia vào
các cuộc tranh luận kiểu như “IDE của tôi tốt hơn IDE kia bởi vì…”, điều
này sẽ giúp cho cộng đồng JAVA có được nhiều lưa chọn hơn về IDEs,
frameworks v.v… Mọi công cụ đều có một vị thế nhất định chẳng hạn như
JDeveloper thì tốt hơn cái khác nếu bạn dự định phát triển hoàn toàn
trên tầng kiến trúc của Oracle v.v…
10. Biết về ANT (or MAVEN), TOMCAT và các máy chủ ứng dụng
mainstream khác (Know ANT , TOMCAT and any other mainstream application
server)
ANT, thực tế là ngôn ngữ kịch bản để build các ứng dụng JAVA. MAVEN cũng
dần trở nên thông dụng như ANT. Còn TOMCAT, với các LTV, nó có lẽ vĩnh
viễn trở thành một ứng dụng phía server để xử lý các servlet và render
các trang web có chứa mã JSP.
Sẽ còn rất nhiều thứ, tuy nhiên trên đây có lẽ là 10 điều căn bản đầu tiên mà mọi LTV nên trang bị cho mình.
Nguồn: sưu tầm từ internet.

Comments
Post a Comment