Các tài nguyên Java cần thiết
Một bản liệt kê toàn diện các cuốn sách, các địa chỉ Web, các blog, các sự kiện
phải kể đến và nhiều hơn nữa
Ted Neward, Tư vấn, ThoughtWorks
Tóm tắt: Chẳng bao lâu nữa nền tảng Java™ sẽ làm lễ kỷ niệm sinh nhật lần thứ
14 của nó và như một tác dụng phụ, khi một ngôn ngữ thành công và có mặt khắp
mọi nơi đạt tới mốc lịch sử như thế này, là sự sinh sôi lan rộng của các thư viện,
các công cụ và những ý tưởng —phần thưởng thêm này có thể làm cho nhiều
người mới đến với ngôn ngữ Java trôi lênh đênh trong một biển tư liệu. Trong bài
viết này, tác giả (một người đóng góp không ngừng nghỉ cho cái biển ngập tràn
ấy) bẻ lái xuyên qua dòng thủy triều rộng lớn và trình bày một danh sách các
nguồn tài nguyên then chốt mà bất kỳ các nhà phát triển Java đầy triển vọng nào
nên có.
thuật và các kỹ thuật mà lập trình viên có thể sử dụng để cải thiện năng suất của mình, vượt xa những gì mà IDE cung cấp cho họ. The Pragmatic Starter Kit Cuốn sách này bao gồm Các phần thử nghiệm đơn vị thực dụng (với JUnit), Tự động hóa dự án thực dụng và Kiểm soát nguồn thực dụng (với Subversion). Mỗi phần đề cập điều cốt lõi của từng chủ đề thông qua tập trung thảo luận để đi sâu trực tiếp đến cốt lõi của vấn đề mà không làm mất đi sự tập trung. Đặc biệt, Tự động hoá dự án là một một món khai vị tuyệt vời cho cuốn sáchAnt hành động (Ant in Action), nhưng cũng trình bày những cái tại sao và những gì làm cho một quá trình xây dựng tốt. Ant in Action (2nd Ed) của Erik Hatcher và Steve Loughran Ant là một tiện ích xây dựng ra mắt lần đầu tiên cho nền tảng Java (xem phần kế tiếp về các công cụ để biết thêm chi tiết) và cuốn sách này là sự giới thiệu tốt nhất về sức mạnh to lớn mà Ant có. Cùng với việc học cách sử dụng Ant, Ant in Action cũng giải thích việc thử nghiệm đơn vị, tích hợp liên tục và các biện pháp thực tiễn triển khai sản xuất, tất cả từ một phối cảnh những thực tiễn hàng ngày của nhà phát triển Java thực hành. Các công cụ Cũng giống như có nhiều thứ để xây dựng một căn nhà hơn là "nắm lấy một cái búa và bắt đầu đóng các tấm ván", có nhiều thứ để phát triển Java hơn là "nắm lấy IDE của bạn và bắt đầu viết mã". Mặc dù chắc chắn rằng có một IDE tốt là một sự trợ giúp rất lớn để viết mã Java, các công cụ khác có thể mang lại cùng giá trị như — nếu không phải là nhiều hơn — IDE. Không theo thứ tự đặc biệt nào.... The IDE Tất nhiên, việc thảo luận về công cụ bắt đầu với IDE. Cố gắng để tránh xa con đường thương mại hóa, cả Eclipse lẫn NetBeans là mã nguồn mở và miễn phí và do đó cung cấp một tùy chọn hấp dẫn cho "các bước đầu tiên". Thử nghiệm đơn vị (Unit testing) Công cụ mãi mãi yêu thích ở đây là sản phẩm nguồn gốc, bắt đầu cuộc cách mạng trong kiểm thử đơn vị, đó là JUnit, nhưng một số công cụ khác len lỏi vào và được sử dụng phổ biến, gồm có TestNG và không ngạc nhiên, có cả JUnitPerf, trong số đó. Tích hợp liên tục (Continuous Integration) Một máy chủ tích hợp liên tục thường xuyên kiểm tra mã nằm ngoài kiểm soát nguồn, xây dựng nó, chạy các thử nghiệm đơn vị đối với nó và báo cáo về bất kỳ các sự cố xây dựng nào cho các nhà phát triển, thường là qua e- mail. Một số phiên bản mã nguồn mở có sẵn, nhưng một phiên bản đã tập hợp được nhiều sự chú ý là Hudson, một máy chủ tích hợp liên tục với nhiều trình cắm thêm và có khả năng mở rộng cao. Gốc ban đầu là CruiseControl và chỉ nói về các lệnh. Phân tích tĩnh FindBugs FindBugs là một công cụ phân tích tĩnh mã nguồn mở chạy trên mã Java, thực hiện phân tích sâu n-đường để tính toán tất cả các tuyến mã lệnh có khả năng xảy ra và báo lại mọi loại lỗi và cảnh báo mà nó tìm thấy, dựa trên một bộ quy tắc rộng lớn. Được phát triển bởi William Pugh (cũng là William Pugh người đã phát hiện một lỗi trong mô hình bộ nhớ của Java ), khẳng định lớn nhất cho sự nổi tiếng của FindBugs là khả năng phân tích mã Java tìm các lỗi tương tranh, một điều mà mọi lập trình viên đều đánh giá cao. Theo vết gói mạng WireShark (mà trước đây thường được gọi là Ethereal) cho các lập trình viên trông thấy những gì đang đi ngang qua mạng, tạo cho họ một cơ hội để kiểm tra rằng những gì đang chạy trên dây đúng là những thứ cần phải chuyển đi trên mạng và những gì không nên có ở trên mạng (như là các thông tin nhạy cảm hoặc các mật khẩu dưới dạng chưa mật mã) thì không có ở đó. Ảo hóa (Virtualization) Một công cụ ảo hóa (hoặc có lẽ chính xác hơn nên gọi nó là một nền tảng) như VMWare, Xen, VirtualBox hoặc VirtualPC cung cấp cho các lập trình viên khả năng để tạo ra một môi trường giống hệt với môi trường mà máy tính sản xuất sẽ chạy mà không bị mất năng suất môi trường của máy PC chứa nó. Nó cũng cung cấp một biện pháp thuận tiện để có một chỗ chạy thử các phần mềm "thí nghiệm" mà không gây ra nguy hiểm cho máy tính phải dùng để sản xuất. Hầu hết chúng đều có một tùy chọn miễn phí nào đó, nếu như không phải là các dự án hoàn toàn mã nguồn mở. Thực tế là một vài trong số này là các công cụ thương mại, bạn không nên sợ; nếu một công cụ tiết kiệm cho bạn thậm chí chỉ một giờ một tuần thì trong bao lâu nó sẽ bù lại cho bạn tiền mua chính nó? Và nếu ban quản lý không đồng ý với lý luận đó, việc tính toán cẩn thận số thời gian mà một công cụ có thể tiết kiệm được (dù đó là thời gian của nhà phát triển hoặc dự đoán sản xuất hoặc thời gian thực hiện) nói chung sẽ tiến một bước dài theo hướng thuyết phục được họ về hành động dại dột theo cách suy nghĩ keo kiệt, khôn trong chuyện nhỏ/ngốc trong chuyện lớn. Cám ơn các công tác viên Xin cám ơn tất cả những người đọc blog của tôi (blogs.tedneward.com), đã dành thời gian từ lịch công tác riêng của mình để gợi ý các nguồn tài nguyên cần có trong danh sách này; một số (nhưng chắc chắn không phải tất cả) bao gồm Ostrovich Greg, Ryan Slobojan, Hamlet D'Arcy (người đã yêu cầu được nêu tên là "Một kẻ lưu vong khác giữa thiên hà, kiếm tiền trong CNTT để mua các phụ tùng và vá víu lại tên lửa đẩy của mình, tại đó anh ta sẽ sửa chữa con tầu không gian của mình và quay lại hành tinh quê nhà"), Pierre-Marc Larocque, Prashant Rane, Marc Stock, Eric Kerwin, Morten Anderson, Alex và Yvonne Miller, Rahul Raj, Brian Sletten và Neal Ford. Xu hướng trong tương lai cần theo dõi Dĩ nhiên, thật là chẳng tốt đẹp gì đối với các nhà phát triển Java khi dành thời gian để nghiên cứu công nghệ hôm nay, nếu khi học xong, các công nghệ của ngày mai đã tiến lên và tất cả mọi thứ đã học bỗng nhiên lỗi thời. Để mắt đến những gì đang lay động xung quanh như là "những làn sóng của tương lai" có thể ít nhất cũng quan trọng, nếu chỉ có mục đích là khi CTO của công ty tình cờ đứng bên cạnh bạn trong thang máy và hỏi "Rốt cuộc, những thứ mà tôi nghe nói về ngôn ngữ chức năng là cái gì thế? Chúng ta có nên xem xét kỹ điều đó không?", bạn có thể có một câu trả lời rõ ràng. Một số hướng "tương lai" xung quanh nền tảng Java, không xếp theo một thứ tự đặc biệt nào, bao gồm: Ngôn ngữ động Các ngôn ngữ như Groovy và JRuby đã sinh ra các dự án khác đáng để xem xét như Clojure và Fan; chúng thí nghiệm ý tưởng rằng một môi trường định kiểu yếu hơn (less-strongly-typed) có thể mang lại năng suất cao hơn và đưa ra nhiều tùy chọn hơn. Tuy nhiên, đây không phải là một lời kêu gọi từ bỏ ngôn ngữ Java: hiệu quả tốt nhất sẽ đến với việc kết hợp của cả hai. Các ngôn ngữ lập trình chức năng (Functional languages) Được Scala đi tiên phong, các ngôn ngữ lập trình chức năng có đặc tính ưu việt là ngầm thân thiện tương tranh do xu hướng chung của các ngôn ngữ này là khuyến khích dùng các chức năng có khả năng kết hợp lại với nhau và không dùng trạng thái chia sẻ chung (mặc dù chắc chắn là đôi khi chúng có thể có một cú pháp mà chỉ có người mẹ đẻ ra mới có thể yêu thích được). Jaskell là một bản thực thi Haskell-trên-JVM và (lại là) Clojure cũng thuộc họ này, cung cấp một tầm nhìn về bộ nhớ giao dịch phần mềm trông như thế nào khi chạy ứng dụng thực sự. Chấm dứt trong Java Việc thêm hỗ trợ bao đóng (còn được gọi là các phương thức lam đa hoặc ẩn danh) sẽ làm đơn giản hóa một số phần nhất định trong viết mã Java và đang được tranh luận sôi nổi để đưa vào trong phiên bản Java 7. Vì cuộc tranh luận này đang chia rẽ sâu sắc cộng đồng, các lập trình viên Java có nhiệm vụ tiến hành một nghiên cứu nhỏ và xem tất cả những ồn ào ấy là gì. Các máy DaVinci Một phiên bản mới của JVM được thiết kế để thân thiện hơn với các ngôn ngữ khác (như ngôn ngữ động và ngôn ngữ chức năng được đề cập ở trên), có thể, hoặc có hoặc không, kết thúc bằng việc trở thành một luồng chủ đạo của JVM. Để mắt đến vấn đề này sẽ giúp hiểu được những lý lẽ tán thành và phản đối việc chạy ngôn ngữ động/ngôn ngữ kịch bản lệnh trên JVM hiện tại. Phát triển giao diện người dùng Giữa Flash/Flex, Silverlight và JavaFX, các trình duyệt Web gần như có sự thay đổi trang trí bề ngoài của những phần gây sửng sốt (và cũng có thể làm kinh sợ nữa). Đấy là thậm chí còn chưa xét đến các khung công tác Web phía máy chủ mới trong không gian Java hoặc những thứ khác như bộ dụng cụ Web của Google (Google Web Toolkit-GWT). Giao diện người dùng luôn luôn là và tiếp tục là (và sẽ còn là, trong một tương lai dự đoán được) ham muốn đích thực. Việc hiểu biết một hoặc hai, chưa nói đến một thư viện "phía khách phong phú" như Swing hay SWT, sẽ có lợi ích to lớn khi cố gắng xây dựng một cái gì đó tương tác nhiều hơn cái mà các trang HTML có thể cung cấp. Giống như với bất cứ điều gì có liên quan đến "tương lai", hãy chú ý rằng những gì đang được thảo luận ngày hôm nay có thể trở thành một hướng sai, một chuyện đầu voi đuôi chuột, một sự sao lãng tạm thời, một sự chịu ảnh hưởng từ ngành công nghiệp, hoặc trở thành Một Điều Vĩ Đại Tiếp Theo; hãy có đầu óc cởi mở và tinh thần hoài nghi lành mạnh với liều lượng như nhau. Tóm tắt Xin cứ tự nhiên đóng góp vào danh sách này — nó sẽ chỉ dẫn đến một danh sách các nguồn tài nguyên tốt hơn mà thôi. Thời gian trôi đi cũng sẽ làm thay đổi nội dung của nó vì hệ sinh thái tiếp tục tiến hóa và thay đổi và lớn mạnh. Đây là một điều tốt; nếu chúng ta phải sử dụng cùng một môi trường Java mà chúng ta được cung cấp vào năm 1995, chúng ta đã đi đến cái gì đó khác mất rồi. Tích cực hoạt động trong hệ sinh thái: đóng góp các bản vá lỗi, đề nghị cải tiến và nếu tất cả đều thất bại, hãy thoát ra và xây dựng tác phẩm tốt hơn của chính bạn. Biết đâu năm năm sau dự án của bạn sẽ vào trong danh sách này, ai biết được? Mục lục Các địa chỉ Web và các cổng Web của nhà phát triển Weblogs Các gói phần mềm và/hoặc các thư viện Các hội nghị Các cuốn sách Các công cụ Xu hướng trong tương lai cần theo dõi Tóm tắt
File đính kèm:
- Các tài nguyên Java cần thiết.pdf