11 sách học Java cực hay từ các Java Guru

Java là ngôn ngữ lập trình hướng đối tượng (OOP), đa mục đích và độc lập nền tảng. Code Java “viết một lần, chạy mọi nơi”, làm việc “lý tưởng” trên bất kì thiết bị chạy hệ điều hành nào, miễn là được cài đặt Java Runtime Environment (JRE).

Học Java cực kì thú vị, nhất là với 11 cuốn sách cực hay được đề xuất từ những Java Guru thế giới. Bạn sẽ:

  • Tăng kiến thức về Java qua nhiều chuyên đề
  • Hiểu rõ và hiểu sâu các vấn đềthường hay hiểu lầm
  • Biết được các giải pháp cho vấn đề đang gặp phải

Java là gì?

Java là ngôn ngữ lập trình hướng đối tượng (OOP), đa mục đích và độc lập nền tảng. Thay vì biên dịch mã nguồn thành mã máy trên nền tảng cụ thể, code Java được biên dịch thành bytecode – một định dạng trung gian. Bytecode sau đó sẽ được chạy bởi môi trường thực thi (runtime environment).

Nói cách khác, code Java “viết một lần, chạy mọi nơi”. Nó sẽ làm việc “lý tưởng” trên bất kì thiết bị chạy hệ điều hành nào, miễn là được cài đặt Java Runtime Environment (JRE).

Ngôn ngữ Java được thiết kế bởi James Gosling và đồng nghiệp tại Sun Microsystems năm 1991. Sau này, Oracle mua lại Sun Microsystems và tiếp quản công nghệ Java với cam kết “không ngừng thúc đẩy một cộng đồng năng động và minh bạch.”

Giờ thì bạn đã sẵn sàng để học Java?

Thinking in Java (4th Edition)

Điểm mạnh nhất của cuốn này là những ví dụ thông minh đi thẳng vào vấn đề, nội dung rõ ràng, cấu trúc cẩn thận.

Nếu đã có kinh nghiệm lập trình, nhất là lập trình hướng đối tượng C++, thì đây là lựa chọn đúng đắn.

Nội dung sách đi từ cú pháp cơ bản đến kiến thức nâng cao, chú trọng lập trình hướng đối tượng và các APIs khác nhau trong Java 2.

Những sách khác trình bày thế nào là Java (cú pháp, thư viện) hoặc code Java bằng cách nào (kèm ví dụ thực tế). Đây là sách duy nhất giải thích tại sao lại là Java:

  • Tại sao Java lại được thiết kế như vậy
  • Tại sao code Java chạy như thế hoặc tại sao không
  • Tại sao Java lại tốt hơn C++ điểm này mà không tốt hơn điểm kia…

Effective Java (2nd Edition)

James Gosling, cha đẻ ngôn ngữ Java từng chia sẻ:

“Tôi ước mình có cuốn sách này 10 năm trước. Đó giờ tôi vẫn nghĩ mình không cần một cuốn sách dạy Java nào, cho đến khi tôi biết cuốn này.”

Điểm hay nhất là cách sách sắp xếp và trình bày với những điểm chính:

  • Bao quát những điểm mới về Generics, Enums, Annotations, Autoboxing, For-each loop, Varargs, Concurrency,…
  • Cập nhật kỹ thuật và những cách áp dụng mới nhất về Object, Class, Library, Method, Serialization.
  • Cách tránh sai lầm và lỗi phổ biến ẩn trong ngôn ngữ này.
  • Tập trung vào ngôn ngữ và những thư viện cơ bản: java.lang, java.util, java.util.concurrent, java.io.

Java Performance

James Gosling từng chia sẻ suy nghĩ của ông rằng:

“Nếu bạn yêu thích từng chi tiết nhỏ nhất về performance của các ứng dụng Java thì đây là quyển sách dành cho bạn.”

Cuốn này phù hợp nếu bạn đã khá tốt về Java. Kiến thức trong sách giúp những chương trình của bạn đạt được tối đa hiệu quả và giá trị, dù nó có độ phức tạp ra sao, đang chạy trên nền tảng nào, hoặc đã được viết bao lâu.

Bạn sẽ biết cách xây dựng các thử nghiệm cho việc tối ưu, hiểu rõ các kết quả thu được từ đó đưa ra quyết định và lựa chọn hiệu quả, cách đo lường từng điểm nhỏ nhất cũng như tránh những lỗi phổ biến dẫn đến phần mềm hiệu suất chưa cao, tối ưu Java HotSpot VM, các ứng dụng chuẩn và nhiều lớp, ứng dụng Web…

Java Concurrency in Practice

Không có nhiều sách bên ngoài bao quát toàn diện và chuyên sâu Concurrency như cuốn này. Mỗi trang là những vấn đề từ cơ bản đến phức tạp (kèm theo giải pháp) bạn gặp hàng ngày.

Nội dung trình bày rất chi tiết và khéo léo theo cách rõ ràng, súc tích, được viết cẩn thận, dễ bám sát, mạnh về áp dụng thực tế.

Ngoài nhiều ví dụ tuyệt vời (code tốt, code dở, câu hỏi…), sách giúp bạn cả về mặt lý thuyết căn bản lẫn kỹ thuật nâng cao.

Thay vì trình bày các Concurrency APIs cùng những cơ chế, sách đưa ra các nguyên tắc thiết kế, mẫu và các mô hình để bạn dễ triển khai phần mềm chính xác và hiệu quả. Nội dung chính:

  • Fundamentals (Chương 2 – 5): những khái niệm Concurrency cơ bản và Thread-safe. Chương 2 – 3 chủ yếu về lý thuyết, ít code hơn các chương còn lại, đề cập gần như toàn bộ những điểm nguy hiểm nên tránh trong Concurrency, tạo và kiểm tra Thread-safe. Chương 4 – “Composing Objects”: các kỹ thuật để composing thread-safe. Chương 5 – “Building Blocks” – bàn về Thread-safe Collection và Synchronizer.
  • Structuring Concurrent Applications: những cách dùng đa luồng hợp lý.
  • Liveness, Performance, and Testing: cách đảm bảo các chương trình đa luồng hoạt động với hiệu quả tốt, cách tránh các trường hợp Thread chạy vô tận cùng những chủ đề, giải thích rất hay về ThreadLocal.
  • Advanced Topics: giúp bạn áp dụng những kỹ thuật sau một cách an toàn: explicit locks, atomic variables, nonblocking algorithms và tùy chỉnh synchronizer.

Java Puzzlers Traps - Pitfalls - and Corner Cases

Ooh. Ow. Ouch. Eek. Argh. AHA. Sách này sẽ làm bạn trải qua những cảm xúc “kinh ngạc”, “sáng mắt”, “nhũn não”… Nó cho bạn thấy những điểm “lừa tình” trong ngôn ngữ Java theo cách mà bạn không thể ngờ tới.

Thậm chí nếu bạn là một lập trình viên lão luyện, những thử thách trong sách vẫn thật sự thú vị vì mỗi câu đố đều có độ khó được viết theo phong cách lôi cuốn và hài hước, luôn tỏ vẻ cho bạn cơ hội dễ dàng suy luận, giải quyết vấn đề và rồi, bạn lại thấy mình sai :D.

Nếu bạn giải sai, thì tiếp đó bạn sẽ suy luận tại sao lại sai và làm cách nào để sửa. (Đừng vội đầu hàng bằng cách xem hướng dẫn ở trang sau.) Đây là cách đọc sách hiệu quả mà nhiều Dev đã chia sẻ.

Đa phần những câu đố là các lỗi trong những phần mềm thực tế, được chia theo thể loại hoặc giải pháp: Expressive Puzzlers; Puzzlers with Character; Loopy Puzzlers; Exceptional Puzzlers; Classy Puzzlers; Library Puzzlers; Classier Puzzlers; More Library Puzzlers; Advanced Puzzlers.

 

Head First Java 2nd Edition

Với cách trình bày độc đáo, phong cách sinh động, câu đố, hình ảnh trực quan… Head First Java không chỉ hay cho bất cứ ai mới học về Java mà còn tốt cho những bạn đã có trình độ cao.

Những cuốn khác chỉ nói nên viết object.equals(object) thay vì object==object. Còn Head First Java giúp lý giải vì sao phải viết như vậy.

Tác giả còn tinh tế để lại nhiều gợi ý về phần quan trọng bằng câu: “Bạn có thể áp dụng kỹ thuật này trong hầu hết mọi trường hợp” hoặc “không cần lo phần phức tạp còn lại vì có thể bạn sẽ không bao giờ phải sử dụng nó”.

Nội dung tập trung Java 5.0, gồm những kiến thức lập trình từ cốt lõi đến nâng cao: Class, Object, Thread, Collection, Generics, Enum, Variable Arguments, Auto-boxing, Swing, Networking, Java IO…

Core Java Volume I--Fundamentals (10th Edition) (Core Series)

Nội dung lần tái bản này nêu ra những điểm mới trong Java SE 8, những cách thực hành tốt nhất cùng hàng trăm ví dụ lập trình – tất cả được trình bày theo cách dễ hiểu, dễ áp dụng thực hành, giúp bạn hiểu sâu về ngôn ngữ Java và các thư viện để giải quyết những vấn đề lập trình thực tế.

Tác giả luôn trình bày tổng quan trước rồi mới mổ xẻ đến chi tiết, đi thẳng vào vấn đề, không theo kiểu hài hước như Head First.

Các phần source code trong sách hay. Ví dụ được đưa ra ở mức vừa phải để bạn dễ nắm bắt và theo dõi.

Kiến thức bao quát: các khái niệm nền tảng ngôn ngữ và lập trình giao diện người dùng mới nhất, lập trình hướng đối tượng Java, Generics, Collections, Lambda expressions, Swing UI, Concurrency…

Java - A Beginners Guide Sixth Edition

Nội dung cập nhật đầy đủ Java Platform, SE 8. Bằng việc ban đầu đưa ra ví dụ dễ hiểu, sau đấy tiếp tục lặp lại những ví dụ đó với những khái niệm nâng cao hơn hoặc cách tiếp cận khác đi, độ phức tạp tăng dần, sách giúp bạn nắm bắt kiến thức theo cách rất nhanh: “Đây là cách những bạn mới lập trình nên làm… nhưng đây sẽ là cách tốt hơn… và đây mới là cách tốt nhất!”

Nếu đã có kinh nghiệm lập trình hoặc biết C++, việc tiếp thu cuốn này sẽ hiệu quả hơn. Đôi chỗ có chút khó theo dõi và vài lỗi chính tả nhưng nhìn chung dễ hiểu, vẫn được nhiều Dev đánh giá cao trên Amazon.

Nội dung bắt dầu từ cơ bản như làm cách nào để tạo, biên dịch, chạy một chương trình, đến từ khóa, cấu trúc… tạo thành cốt lõi ngôn ngữ.

Không thiếu những kiến thức nâng cao: Multithread, Generics, Swing, Lambda, các phương thức Interface… Phần giới thiệu JavaFX, GUI được hướng dẫn theo từng bước một.

Introduction to Programming in Java - An Interdisciplinary Approach

Nội dung gồm bốn phần: 1) Elements of Programming, 2) Functions and Modules, 3) Object-Oriented Programming và 4) Algorithms and Data Structures với các điểm hay:

  • Cách trình bày tốt, sách bao gồm đầy đủ các vấn đề chính yếu của việc lập trình và cấu thành ngôn ngữ.
  • Xuyên suốt sách là những ví dụ ngắn gọn, hữu ích, chỉ ra những điểm/kỹ thuật chính yếu.
  • Các cheat-sheet chắt lọc những kiến thức quan trọng và cốt lõi.
  • Phần thực hành nêu ra những vấn đề cần giải quyết một cách tuyệt vời.

Java in a Nutshell

Cách diễn đạt rõ ràng, trình bày thẳng vào vấn đề, không rườm rà, phù hợp nếu bạn đã có kinh nghiệm về Java hoặc kiến thức lập trình hướng đối tượng.

Phần đầu giới thiệu ngay về ngôn ngữ và nền tảng. Phần còn lại về những khái niệm cốt lõi và APIs, qua đó giúp bạn biết cách lập trình thực tế trong môi trường Java.

Nội dung bao quát tốt Java 8, cung cấp những kiến thức mới về APIs cùng những bài thực hành tốt nhất:

  • Tiếp cận nhanh ngôn ngữ này, đặc biệt những thay đổi ở Java 8.
  • Học lập trình hướng đối tượng, sử dụng những cú pháp đơn giản.
  • Generics, Enumerations, Annotations và Lambda expressions.
  • Hiểu những kỹ thuật cơ bản trong việc hướng đối tượng.
  • “Mổ xẻ” Concurrency và Memory.
  • Làm việc với Java collections và cách xử lý những định dạng dữ liệu phổ biến.
  • Đi sâu vào I/O APIs, bao gồm những kênh không đồng bộ.
  • Sử dụng Nashorn để thực thi JS trên JVM.
  • Làm quen với những công cụ lập trình trong OpenJDK.

The Java Programming Language, 4th Edition

Sách theo phong cách chính thống và học thuật, được viết từ cha đẻ của ngôn ngữ Java – James Gosling cùng 2 guru khác.

Quyển này vẫn phù hợp nếu bạn đã hoặc chưa có nhiều kinh nghiệm Java.

Nội dung có thể xem là toàn diện, không có những ví dụ dư thừa nhưng kiến thức thì rất phong phú: A Quick Tour; Classes and Objects; Extending Classes; Interfaces; Nested Classes and Interfaces; Enumeration Types; Tokens, Values and Variables; Primitives as Types; Operations và Expressions; Control Flow; Generic Types; Exceptions and Assertions; Strings and Regular Expressions; Threads; Annotations; Reflection; Garbage Collection and Memory; Packages; Documentation Comments; I/O Package; Collections; Miscellaneous Utilities; System Programming; Internationalization and Localization; Standard Packages; Application Evolution; Useful Tables; Further Reading.

Điểm trừ lớn nhất là kể từ 2005, sách chưa cập nhật phiên bản mới.

Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp thì đừng ngại nhấn nút Share bên dưới nhé!