28 điểm bởi GN⁺ 2025-05-18 | 13 bình luận | Chia sẻ qua WhatsApp
  • James Gosling được đánh giá là người tạo ra Java và là một thiên tài thực dụng đã ảnh hưởng đến điện toán hiện đại suốt 30 năm
  • Trong hoàn cảnh nghèo khó, ông học lập trình bằng cách lắp ráp máy tính từ các linh kiện nhặt trong đống rác, và việc tự học có tính chủ động này sau đó cũng được phản ánh vào triết lý thiết kế ngôn ngữ của ông
  • Những ngày ở Sun Microsystems, nơi trò đùa và đổi mới cùng tồn tại, đã trở thành nền tảng cho khả năng sáng tạo đặc trưng và việc xây dựng văn hóa kỹ thuật của Gosling
  • Gần đây ông bày tỏ sự hoài nghi mạnh mẽ với các công cụ AI tạo sinh và làn sóng bùng nổ AI, đồng thời nhấn mạnh rằng tầm quan trọng của giáo dục lập trình thậm chí còn lớn hơn trước
  • Bí quyết sống còn của Java không nằm ở sự hào nhoáng mà ở triết lý thiết kế thực dụng theo đuổi triệt để tính ổn định, khả năng tương thích ngược và năng suất của lập trình viên

Java at 30: The Genius Behind the Code That Changed Tech

  • Java là một ngôn ngữ hướng đối tượng cấp cao đa dụng tròn 30 năm vào ngày 23 tháng 5, và đến nay vẫn là công nghệ cốt lõi vận hành các hệ thống ở nhiều quy mô khác nhau
  • Nền tảng sâu xa giúp Java có thể tồn tại chính là cảm quan kỹ thuật thực dụng và trực giác sáng tạo của James Gosling
  • Gosling khởi đầu là một thiếu niên người Canada giàu tinh thần tự lập, từng nhặt linh kiện từ thùng rác để lắp máy tính, rồi trưởng thành thành một lập trình viên tầm cỡ thế giới
  • Triết lý “viết một lần, chạy mọi nơi” là biểu tượng của Java, và điều đó tiếp tục trở thành triết lý ngôn ngữ dẫn tới một bước chuyển căn bản trong cách phát triển phần mềm
  • Suốt sự nghiệp, Gosling đã dung hòa năng lực kỹ thuật xuất sắc, tính tinh nghịch và ý thức đạo đức rõ ràng, qua đó hiện thân cho mẫu hình nhà phát triển có ảnh hưởng bền bỉ đến việc hình thành văn hóa điện toán hiện đại

James Gosling: The Brilliant Mind Behind Java

  • James Gosling không chỉ là “cha đẻ của Java”, mà còn là một thiên tài khiêm nhường có thể giải thích trực quan những khái niệm phức tạp
  • Ba mươi năm sau khi tạo ra Java, ông nhìn lại hành trình công nghệ của mình và dành thời gian xem xét lại quá trình tiến hóa của ngôn ngữ và văn hóa phát triển

The Path To Programming: Resourceful Beginnings

  • Trong tuổi thơ vô cùng nghèo khó, Gosling đã có trải nghiệm nhặt một chiếc TV từ thùng rác để nuôi dưỡng óc sáng tạo kỹ thuật
  • Chiếc máy tính đầu tiên của ông được lắp từ một giá relay thải loại của tổng đài điện thoại, tượng trưng cho cảm quan cơ khí và khả năng lắp ráp bộc lộ từ rất sớm
  • Khi đến thăm trung tâm máy tính của Đại học Calgary, ông bị cuốn hút bởi màn hình, ánh đèn nhấp nháy và các thiết bị băng từ, từ đó bắt đầu niềm tò mò kéo dài cả đời với lập trình
  • Ông tự học bằng cách lục tìm punch card để lấy mật khẩu, và khi còn học trung học đã viết chương trình phân tích dữ liệu vệ tinh cho khoa vật lý của trường đại học, tích lũy kinh nghiệm vừa kiếm tiền vừa tận hưởng việc lập trình
  • Trải nghiệm lập trình ban đầu của ông trải dài từ PL/1 và Fortran trên mainframe IBM đến hợp ngữ PDP-8 và mã CDC 6400. Với giọng điệu điềm đạm đặc trưng, ông nhẹ nhàng nhắc rằng “mùa hè tôi làm thêm bằng cách phát triển một trình biên dịch COBOL”, dù đó là công việc mà ngay cả nhiều lập trình viên kỳ cựu cũng khó đảm đương

Academia to Industry: Finding His Way

  • Gosling mô tả giới học thuật là “một phòng thí nghiệm dùng nghiên cứu sinh như lao động giá rẻ”, qua đó bộc lộ quan điểm thẳng thắn coi trọng thực tiễn hơn lý thuyết
  • Ngay trong thời gian làm tiến sĩ tại Carnegie Mellon, ông vẫn làm việc ở startup để tích lũy kinh nghiệm thực tế, rồi sau đó hoàn thành chương trình học, thể hiện lựa chọn lộ trình linh hoạt kết hợp cả công nghiệp lẫn học thuật
  • Công việc đầu tiên của ông là tại IBM Research, nhưng ông vẫn nhận xét đây là “một công ty tận tụy với việc tự bắn vào chân mình”, cho thấy thái độ phân tích lạnh lùng đối với vận hành doanh nghiệp và chiến lược công nghệ
  • Những trải nghiệm ban đầu này về sau trở thành nền tảng giúp ông hiểu văn hóa tổ chức theo hướng thực tế, ảnh hưởng đến cách ông hoạt động tại Sun Microsystems

The Sun Days: Innovation and Pranks

  • Trong những ký ức vui nhất ở Sun, Gosling nhắc tới các dự án chơi khăm quy mô lớn diễn ra hằng năm vào ngày Cá tháng Tư, hồi tưởng về một văn hóa tổ chức nơi sáng tạo và vui nhộn cùng tồn tại
  • Một ví dụ tiêu biểu là việc đặt một chiếc Ferrari trên bệ nổi giữa hồ, cho thấy khiếu hài hước tận dụng năng lực giải quyết vấn đề kỹ thuật và tinh thần đồng đội
  • Trò đùa biến văn phòng CEO thành sân golf 1 lỗ với cỏ nhân tạo, bunker và hồ nước được nhắc đến như một thử nghiệm độc đáo kết hợp công nghệ và vui chơi
  • Gosling nhớ về Sun như “một môi trường hiếm hoi cho phép đồng thời sự xuất sắc kỹ thuật và sáng tạo tinh nghịch”, và đó là nền tảng hình thành thái độ của ông với công nghệ cùng cách giải quyết vấn đề nói chung

Java: Creating a Legacy That Changed Everything

  • Hành trình 30 năm của Java là thành tựu tiêu biểu nhất và bước ngoặt quyết định trong cuộc đời công nghệ của Gosling
  • Mỗi lần nghe ai đó trên phố nói “nhờ Java mà tôi có sự nghiệp”, ông lại cảm nhận sự hài lòng sâu sắc về ảnh hưởng mà mình để lại trong hệ sinh thái nhà phát triển
  • Những tính năng như lambda và generics là thứ ông muốn đưa vào từ đầu, nhưng đã điều chỉnh thời điểm triển khai theo triết lý thiết kế “không đưa vào theo cách sai”
  • Về việc Oracle quản lý Java, ông đánh giá rằng họ “làm tốt hơn mong đợi”, đồng thời nhấn mạnh rằng sự tham gia và đóng góp liên tục của cộng đồng mới là yếu tố đóng vai trò cốt lõi
  • Java đã phát triển theo hướng tối ưu cho môi trường đám mây, đạt mức độ hoàn thiện kỹ thuật “thật sự đáng kinh ngạc” trong hỗ trợ đa lõi, xử lý bộ nhớ và cải tiến GC

Beyond Java: Ventures After Sun

  • Sau khi Sun được Oracle mua lại, Gosling nghỉ ngơi một thời gian ngắn rồi gia nhập Google, nhưng chỉ sau 6 tháng đã rời đi để chuyển sang Liquid Robotics
  • Tại đó ông phát triển hệ thống điều khiển robot biển tự hành, trải nghiệm một môi trường làm việc độc đáo kết hợp công nghệ với thiên nhiên, nơi công việc thậm chí đòi hỏi phải lặn ống thở ở Hawaii
  • Ông tham gia các dự án theo dõi nhiệt độ đại dương ở Bắc Cực và Nam Cực, nhưng nghiên cứu môi trường thiếu kinh phí nên đã xảy ra xung đột với cấu trúc startup dựa trên vốn VC
  • Khi liên tục chịu áp lực chuyển hướng sang lĩnh vực quốc phòng, ông rời đi vì lý do đạo đức, rồi tham gia dự án Greengrass và các công cụ phát triển tại AWS, tiếp tục đưa ra lựa chọn nghề nghiệp cân bằng giữa hứng thú kỹ thuật và chuẩn mực đạo đức

On Open Source and Industry Trends: Cutting Through the Hype

  • Open source được mô tả không chỉ là công cụ cộng tác mà còn là một hệ sinh thái đa hợp vận hành như quan hệ nhà phát triển, chiến lược marketing và mô hình chấp nhận từ dưới lên
  • Về xu hướng low-code và no-code, ông bày tỏ hoài nghi khi cho rằng đây là luận điểm lặp lại từ thời COBOL, và là cách tiếp cận chuyên biệt có giới hạn khi áp dụng vào các miền bài toán phức tạp
  • Ông cho rằng với AI và machine learning, vấn đề nằm ở tên gọi hơn là công nghệ, đồng thời đưa ra phê phán thuật ngữ khi cho rằng “các kỹ thuật thống kê nâng cao” phù hợp với bản chất hơn
  • Ông nhấn mạnh AI chỉ là công cụ và không nên bị hiểu lầm như một thực thể tự trị, đồng thời cho rằng nó nên được xem là công cụ cấp cao hỗ trợ hơn là đe dọa lao động của con người

Developer Tools and Preferences: Embracing Progress

  • Gosling sử dụng NetBeans IDE làm công cụ phát triển chính, đồng thời thể hiện lập trường ủng hộ open source dựa trên giấy phép Apache và một cộng đồng năng động
  • Ông bày tỏ sự tiếc nuối trước thái độ từ chối tiến bộ công nghệ của những nhà phát triển vẫn bám chặt vào Vi hay các công cụ từ thập niên 70~80
  • Dù thỉnh thoảng vẫn dùng Vi vì có thể chạy ở mọi nơi, ông ủng hộ mạnh mẽ việc sử dụng IDE hiện đại trong môi trường phát triển thực thụ

The JVM Vision: From Academic Concept to Global Standard

  • Khái niệm ban đầu của Java Virtual Machine (JVM) bắt nguồn từ thử nghiệm về định dạng phân phối trung lập kiến trúc và nghiên cứu kỹ thuật dịch lệnh mà Gosling hình thành từ thời học cao học
  • Về sau, điều này phát triển thành một công nghệ nền tảng thực thi đa dụng, cho phép không chỉ Java mà nhiều ngôn ngữ khác chạy trên nhiều phần cứng khác nhau
  • Triết lý ‘Write once, run anywhere’ ban đầu từng bị bác bỏ làm đề tài luận án tiến sĩ vì thiếu nền tảng toán học, nhưng rồi lại trở thành một công nghệ thực dụng làm thay đổi môi trường phát triển phần mềm toàn cầu

More Recent Work: Bridging IoT Gaps at AWS

  • Tại AWS, Gosling tham gia phát triển Greengrass, một framework ứng dụng IoT, qua đó hiện thực hóa cách tiếp cận kỹ thuật đơn giản hóa thanh lịch những vấn đề phức tạp
  • Nó trừu tượng hóa các tác vụ boilerplate lặp đi lặp lại giữa triển khai và vận hành như cập nhật OTA, điều khiển từ xa, telemetry, độ tin cậy mạng, bảo mật và quản lý xác thực
  • Phần mã phía thiết bị được công bố open source, qua đó khuyến khích các đóng góp porting từ cộng đồng cho những nền tảng không được Amazon ưu tiên như RISC-V
  • Một dự án công cụ phát triển khác mà ông tham gia sau đó đã bị dừng lại vì cuốn vào cơn sốt AI, qua đó gợi ra các vấn đề của sự hỗn loạn chạy theo xu hướng hơn là tính chân thực công nghệ

AI Skepticism

  • Trong một cuộc phỏng vấn gần đây, Gosling dùng cụm từ “phần lớn là lừa đảo” để nói về cuộc cách mạng AI, cho thấy góc nhìn hoài nghi khi xem AI như một thuật ngữ marketing độc hại
  • Dù thừa nhận đây là công nghệ ấn tượng về mặt toán học, ông chỉ ra rằng cái tên AI làm mờ đi bản chất kỹ thuật thực sự là các kỹ thuật thống kê nâng cao
  • Ông chỉ trích mạnh làn sóng AI do venture capital dẫn dắt là “nơi tụ họp của những kẻ lừa đảo và những người thổi phồng quá mức”, cho thấy sự phê phán gay gắt xu hướng theo đuổi lợi nhuận ngắn hạn và exit hơn là công nghệ hữu ích thực sự
  • Ông cảnh báo phần lớn tiền đầu tư vào AI rốt cuộc sẽ “bị hút vào hố đen”, như một lời cảnh báo về dòng vốn chạy theo trào lưu thiếu tính bền vững

Is It a Vibe? AI Coding Tools: Impressive Demos, Limited Utility

  • Các công cụ viết mã bằng AI tạo sinh tạo ấn tượng mạnh lúc ban đầu, nhưng lại có cấu trúc giới hạn dễ thất bại khi độ phức tạp chỉ tăng lên một chút
  • Những công cụ này chỉ có thể cào lấy và lặp lại các mẫu mã hiện có, trong khi các vấn đề thực sự thú vị luôn là thứ mới mẻ nên không phù hợp với công cụ dựa trên sao chép
  • Trong môi trường phát triển chuyên nghiệp, mã theo khuôn mẫu thường hội tụ thành thư viện, vì vậy việc AI sinh mã xung đột về mặt cấu trúc với nhu cầu phát triển thực tế
  • Gosling định nghĩa giá trị thực sự của AI là một công cụ tìm kiếm thay con người làm những việc tài liệu hóa mà chẳng ai muốn làm, và nhấn mạnh giá trị của nó như một công cụ hỗ trợ chuyên giải thích cách dùng API

Java’s Evolution: Language Features and Runtime Improvements

  • Trong những thay đổi gần đây của ngôn ngữ Java, các cải tiến như suy luận kiểu và cách khai báo mảng được đánh giá là những mở rộng hữu ích giúp tăng sự tiện lợi cho lập trình viên
  • Tuy vậy, Gosling nhấn mạnh rằng bước tiến ấn tượng nhất của Java nằm ở sự cải thiện chất lượng của môi trường thực thi JVM và thư viện chuẩn
  • JVM hiện đại cho thấy hiệu năng thực thi đã đạt tới “mức đáng kinh ngạc” ở các khía cạnh như chất lượng mã, hiệu năng luồng và garbage collection
  • Xét về quản lý bộ nhớ và khả năng dự đoán hiệu năng, nó hiệu quả hơn ngôn ngữ C dựa trên malloc, đồng thời cũng nhắc đến khả năng tinh chỉnh để giảm thời gian dừng của GC xuống chỉ vài mili giây
  • JVM hiện nay được đánh giá là một môi trường runtime hiệu năng cao có thể xử lý ổn định cả những không gian bộ nhớ cực lớn

Programming Languages for Critical Infrastructure

  • Trước câu hỏi nên viết lại hệ thống kiểm soát không lưu của FAA bằng ngôn ngữ nào, Gosling bác bỏ tiền đề của câu hỏi khi nói rằng đó giống như chọn búa khi còn chưa xây nhà
  • Ông nhấn mạnh phải hiểu rõ trước các thuộc tính của miền bài toán như hệ thống liên lạc, quy định quốc tế, lộ trình bay và tránh va chạm rồi mới chọn công nghệ
  • Tuy vậy, ông cũng nói thêm rằng với những hệ thống lớn đòi hỏi độ tin cậy cao, Java có thể là một ứng viên rất mạnh

The Future of Programming in an AI World

  • Dù AI tiếp tục phát triển, lập trình vẫn là kỹ năng thiết yếu, và Gosling nói rằng nếu có con, ông chắc chắn sẽ dạy chúng viết code
  • Ông chỉ trích tuyên bố của các lãnh đạo Big Tech rằng AI sẽ thay thế lập trình viên là những lời đe dọa mang tính tự vệ nhằm gia tăng cường độ lao động
  • Để thực sự hiểu hệ thống thì vẫn cần năng lực lập trình, và ông lập luận rằng ngay cả khi máy móc làm thay, nền tảng hiểu biết kỹ thuật của con người vẫn phải được duy trì

Java’s Longevity Secret

  • Theo Gosling, lý do Java có thể sống sót hơn 30 năm là khả năng giải quyết vấn đề thực tế, tôn trọng người dùng, tương thích ngược, nâng cao năng suất và triết lý lấy độ tin cậy làm trung tâm
  • Java luôn nhấn mạnh tính thực dụng nhất quán hơn là chạy theo mốt ngôn ngữ, và triết lý thiết kế lấy kết quả làm trọng hơn phong cách đặc biệt hiệu quả trong môi trường enterprise
  • Với quan điểm phần mềm “luôn phải hoạt động đúng”, Java vẫn là một công cụ kỹ thuật trung thực và thực dụng

Oracle’s Stewardship: Better Than Expected

  • Về cách Oracle vận hành Java sau khi mua lại Sun Microsystems, Gosling nói họ “đã làm tốt hơn rất nhiều so với suy nghĩ”, đồng thời bày tỏ sự ngạc nhiên trước kết quả vượt ngoài dự đoán
  • Ban đầu ông từng lo ngại về kiểu “cướp bóc và tàn phá” vì những hành động trong quá khứ, nhưng trên thực tế, việc Oracle không cản trở mà còn bảo vệ đội Java khiến ông đưa ra đánh giá tích cực về tính độc lập và cách vận hành lấy công nghệ làm trung tâm
  • Dù chỉ ra rằng hỗ trợ tài chính là chưa đủ, ông vẫn đánh giá cao việc một cấu trúc bảo đảm quyền tự chủ cho đội ngũ kỹ thuật mà không bị doanh nghiệp can thiệp đã được duy trì

Crab Lovers Unite!

  • Gosling từng nói ông muốn làm việc với những người mà mình cũng muốn cùng ngồi ăn, cho thấy thái độ coi trọng tiêu chuẩn hợp tác lấy con người làm trung tâm
  • Phóng viên đã tình cờ gặp Gosling tại Thanh Long, một nhà hàng cua nổi tiếng ở San Francisco, và ghi lại khoảnh khắc một nhân vật lớn của giới công nghệ xuất hiện trong đời sống thường nhật
  • Sau đó, hai người cùng ăn món cua và trò chuyện, rồi hẹn lần gặp sau cũng tại chính nơi ấy, truyền tải sự ấm áp của một kết nối rất con người vượt ra ngoài công nghệ

13 bình luận

 
cosine20 2025-05-21

Tôi cũng nghĩ rằng trong số các ngôn ngữ kiểu tĩnh thì Java là ngôn ngữ dễ dùng và thoải mái nhất.

Tuy nhiên, xét về phát triển mang tính phổ dụng và thực tiễn, việc viết các ứng dụng hướng tới end-user có GUI bằng Java không phải là lựa chọn quá tốt. (Nếu nhìn từ góc độ đó thì tổ hợp C# + .NET là tốt nhất)
Nếu xét đến các ưu điểm của Java thì tôi nghĩ dùng nó cho backend hoặc middleware là trường hợp hợp lý nhất về mặt thực dụng.

Dù sao thì đây cũng là ngôn ngữ mà mỗi khi thỉnh thoảng có việc phải dùng đến, tôi đều có thể xử lý một cách thoải mái, nên có lẽ những trải nghiệm tốt với nó vẫn còn đọng lại nhiều hơn.

 
mhj5730 2025-05-19

Câu chuyện từng tháo TV ở bãi phế liệu để học lập trình đúng là nghe như phần mở đầu của một huyền thoại.

 
ndrgrd 2025-05-18

Đúng là sau Java, các ngôn ngữ mới bắt đầu chú trọng đến năng suất.

Trước đó, C++ thường được dùng, và đến giờ ngay cả việc đọc nó cũng vẫn kinh khủng. Đặc biệt là khi phải đụng vào những dự án đã tồn tại lâu năm.

 
3ae3ae 2025-05-18

Thật khó để đồng ý với nhận định rằng Java coi trọng năng suất của lập trình viên
Có ngôn ngữ nào khác phát triển theo hướng phụ thuộc sâu vào IDE như Java không?

 
3ae3ae 2025-05-19

Có vẻ tôi đã để lại một bình luận quá hấp tấp.

 
sunrabbit 2025-05-19

Việc phụ thuộc quá nhiều vào IDE là vấn đề của hệ sinh thái Java đã phát triển theo hướng không lý tưởng,
chứ không phải vấn đề ở cấp độ thiết kế.

Nói thẳng ra thì hiện nay khi phát triển Java, không nhất thiết phải dùng sản phẩm của JetBrains,
nhưng cũng giống như việc mọi người đều đang dùng nó vậy.

Và nếu nhìn vào danh sách các ngôn ngữ lập trình ở thời điểm Java ra đời, đó là thời kỳ có nhiều ngôn ngữ với cách triển khai phụ thuộc vào nền tảng, tức là phụ thuộc vào OS.
Java chính là thứ đã cho thấy định hướng của những ngôn ngữ như Node, Python, C# có thể chạy trên nhiều OS khác nhau với cùng một đoạn mã.

Ngày nay, khả năng tương thích để cùng một đoạn mã chạy trên nhiều OS đã trở thành một "lẽ thường" hiển nhiên rồi.

 
roxie 2025-05-26

> Nói thẳng ra thì bây giờ phát triển Java cũng đâu nhất thiết phải dùng sản phẩm của JetBrains

Phần này thì... tôi hơi khó mà đồng ý được, huhu...

 
kwj9211 2025-05-19

Bây giờ thì điều đó có vẻ khá hiển nhiên,
nhưng vào thời điểm Java ra đời, chỉ riêng việc hỗ trợ đa nền tảng một cách ổn định mà không cần bản build mới hẳn cũng đã là một cú hích rất lớn cho năng suất rồi, đúng không?

 
angrycoder 2025-05-18

So với các ngôn ngữ trước Java, có vẻ năng suất cũng tốt hơn.

 
ahwjdekf 2025-05-18

c++ > c# >= java

 
cosine20 2025-05-21

C# >= Java > C++

 
GN⁺ 2025-05-18
Ý kiến Hacker News
  • Mọi người nhìn nhận rằng hiệu năng của Java không ở mức hàng đầu, nhưng cũng không tệ khi đứng khoảng thứ 3 sau C/C++, thậm chí còn nhanh hơn Go và vượt Python hay Ruby hơn 10 lần; cú pháp Java tuy không hoàn hảo nhưng có ưu điểm là nhất quán và dễ đoán; nếu dùng các công cụ như Idea hay Eclipse thì không phải lo về năng suất; cách quản lý bộ nhớ khác với triết lý Unix nhưng khi hiểu rồi thì thấy đây là một thỏa hiệp chấp nhận được; họ hài lòng với tính thực dụng có được từ các đánh đổi này: vừa có tốc độ và an toàn bộ nhớ, vừa có thêm lợi thế như gọi động và hotswap
    • Thật sự cảm nhận được rằng các công cụ như IntelliJ cho Java vượt trội hẳn so với môi trường của các ngôn ngữ khác; tò mò vì sao cộng đồng Go lại không mấy nhiệt tình với việc phát triển các container cấu trúc dữ liệu đồng thời; thấy ghen tị với văn hóa lập trình đồng thời của Java vốn khuyến khích dùng các container rất tốt, và đôi khi nhớ java.util.concurrent hay JCTools
    • Hồi mới tốt nghiệp đại học từng nghĩ Java là vạn năng, nhưng về sau mới nhận ra thứ đi trước thời đại thật ra là bộ công cụ JVM và Java App Server; bản thân ngôn ngữ đã từng gây thất vọng trước khi năng suất được cải thiện vào giai đoạn 2006~2007; hiện nay quan tâm đến các ngôn ngữ khác chạy trên JVM như JRuby, Clojure, Scala, Groovy, Kotlin; trong đó JRuby thú vị vì có thể tận dụng hai hệ sinh thái đã trưởng thành; việc Project Loom mang Fiber kiểu Ruby lên JVM là lợi cho cả hai phía; thành tựu của Charles Nutter đang bị đánh giá thấp
    • Dù nói Java nhanh hơn Go, nhưng thực tế nhiều trường hợp Go lại nhanh hơn hoặc dùng ít bộ nhớ hơn 2~10 lần nên nhìn chung là tương đương; nhờ value type của Go mà việc tối ưu hóa dễ hơn; việc đặc biệt nhắc đến Go khá ấn tượng, và vì C# nhanh hơn Java nên có người cho rằng Java không phải hạng 3 mà khoảng hạng 5
    • Đánh giá cao việc các tính năng gần đây của Java như sealed class, switch expression, Project Loom, records đã hòa nhập rất tự nhiên vào cú pháp hiện có; cũng cảm nhận rằng các công cụ chẩn đoán của Java như trình phân tích heap dump hay GC analyzer đều ở đẳng cấp hàng đầu
    • Chỉ ra rằng thứ hạng hiệu năng ngôn ngữ sẽ thay đổi tùy theo việc đưa gì vào và so sánh như thế nào; tham khảo liên kết benchmark đã cung cấp
  • Có trải nghiệm rằng Java (JVM) lại càng được đánh giá cao hơn sau khi thử các ngôn ngữ/hệ sinh thái khác từng được đồn là tốt; cảm giác lặp đi lặp lại rằng thực ra chỉ là “cỏ bên kia đồi luôn xanh hơn”; chỉ riêng Rust là thật sự mang lại cảm giác rất tiến bộ và thú vị khi dùng; tiếc rằng ngày nay Java không còn được xem là ngôn ngữ “ngầu” trong giới startup, và khoảng cách về năng suất cũng gần như đã biến mất
    • Đã dùng Rust full-time trong hai tháng, nhưng ít nhất với phát triển server thì không hiểu nổi cách diễn đạt rằng nó mang lại “niềm vui” so với Java; Rust có quá nhiều khoảnh khắc productivity tụt mạnh vì vướng lifetime; cảm giác an toàn kiểu mạnh thì rõ ràng, nhưng để gọi đó là một trải nghiệm thực sự vui thì khá khó
    • C# đã vượt Java rất xa và khác biệt ở những điểm có ý nghĩa, ví dụ generic được triển khai tốt hơn nhiều, value type đã có từ rất lâu, FFI cũng tiện lợi; ngoài Unity ra thì ít người để tâm, và có người cho rằng Microsoft ngày xưa đã thất bại trong việc giành được độ nhận diện đại chúng
    • Có ý kiến cho rằng cảm giác đó đến từ việc quy mô dự án khác nhau; thường khi rời một dự án Java legacy lớn kéo dài 10 năm sang một dự án “mới” cỡ hello-world thì đương nhiên sẽ thấy tốt hơn; rewrite quy mô lớn cũng tốt cho việc rà soát bảo mật, nhưng đa số công ty không đủ dư dả để làm vậy, ngoại trừ vài trường hợp như Google
    • Cũng có cảm giác y như vậy; Go gây thất vọng, hứa hẹn đủ thứ nhưng kết quả lại tương tự Java, thậm chí còn thụt lùi hơn ở những điểm như lỗi không có stack trace
    • Trong gần 30 năm sự nghiệp, có 2 năm thử làm dự án bằng ngôn ngữ ngoài JVM và đó là giai đoạn tệ nhất trong cả sự nghiệp
  • Biết ơn thành tựu của James Gosling; từng nhờ Java World Tour mà khi tìm kiếm “Java consultant” mình hiện lên đầu tiên, từ đó làm việc từ xa và duy trì cuộc sống ổn định ở vùng quê; có rất nhiều người mà Java đã tác động tích cực đến cuộc đời họ; cũng khâm phục thành tựu của đội Clojure trong việc xây dựng một hệ sinh thái tuyệt vời trên nền JVM
    • Bản thân cũng biết ơn James Gosling; năm 1995 làm C++ ở Taligent rồi lần đầu dùng Java và ngạc nhiên trước sự mới mẻ của nó; sau khi Taligent giải thể thì gắn bó rất lâu với Java và phần mềm liên quan
    • Đánh giá James Gosling (Java) và Rich Hickey (Clojure) là những người sáng tạo đã mang lại làn gió mới cho thế giới lập trình trong từng thời đại của họ
  • Dù những năm gần đây làm việc với .NET/C#, nhưng nhìn tổng thể vẫn thấy JVM/Java là hệ sinh thái tốt nhất mình từng trải nghiệm; Java có nhiều chỗ giải quyết vấn đề tốt hơn hẳn; ví dụ Java xử lý chia nhỏ công việc bằng fork/join pool, còn .NET thì chỉ nhét work-stealing vào global thread pool nên mã sync-over-async dễ gây deadlock toàn cục; với codebase lớn, việc bắt chuyển toàn bộ mã sync sang async thực tế là bất khả thi; phía Java ở cấp thư viện/framework thường khắc phục nhanh ngay cả khi có sai lầm, còn .NET nếu lỗi nằm ở standard library, ngôn ngữ hay runtime thì rất khó sửa; Java có nhiều trường hợp đặt chuẩn rất đúng
    • Thread pool starvation của .NET cực kỳ khó chịu, dù nghe nói gần đây ảnh hưởng đã giảm; nghĩ rằng không thể có một triển khai miễn nhiễm với việc lạm dụng thread pool; thứ có thể làm chỉ là tăng thêm thread hoặc sắp xếp thứ tự công việc thông minh hơn; bản thân không phải chuyên gia thread pool nên cũng không chắc
    • Từng nghĩ .NET đã mô phỏng cách tiếp cận thành công của hệ sinh thái Java, nhưng thực tế có rất nhiều điểm khác biệt
    • Có ý kiến rằng nhắc đến vấn đề deadlock khi hoàn toàn không viết .NET code là không công bằng, và việc lấy một bài blog từ 13 năm trước làm căn cứ cũng không thuyết phục
  • Java được xem là một câu chuyện thành công vĩ đại, nhưng James Gosling chỉ là điểm khởi đầu chứ không phải người lãnh đạo thực chất; từ thời Java 1.1~1.2, Mark Reinhold đã dẫn dắt hàng loạt đổi mới như tích hợp JIT, phát triển HotSpot, mở rộng lớn số lượng class ở bản 1.2, hỗ trợ ngôn ngữ động sau thương vụ Oracle, open source, phát hành nhanh, và nền tảng cho các tính năng ngôn ngữ hiện đại; có người đánh giá rằng các thế mạnh của Java đều nhờ vào năng lực lãnh đạo của Mark Reinhold
    • Cả đội phát triển chủ chốt đều rất ấn tượng; Gosling muốn một ngôn ngữ thực dụng, rồi sau đó những người như Mark Reinhold và Brian Goetz tiếp tục phát triển ngôn ngữ theo hướng thân thiện với lập trình viên; không thích Oracle nhưng vẫn biết ơn vì đã để một nhóm xuất sắc như vậy tiếp tục tiến lên
    • Chỉ ra rằng Kotlin là ngôn ngữ kiểu tĩnh giống Java, không phải ngôn ngữ động
    • Nêu ví dụ Linus chỉ hack ra git trong đúng 2 tuần và chỉ cung cấp tia lửa ban đầu, còn cộng đồng mới là bên mở rộng nó, để nói rằng đánh giá chỉ dựa vào điểm khởi đầu là chưa đầy đủ
  • Với tư cách một kỹ sư phần mềm ngoài 40, có người cho rằng lựa chọn khôn ngoan trong thực tế là dùng “công cụ giúp công việc trôi chảy”; ngày nay Java hay C# đều làm tốt vai trò đó; cá nhân thấy hệ sinh thái C# được tích hợp tốt hơn, với bất kỳ use case nào cũng có thể làm app bằng C# trong 1 phút, ngôn ngữ phát triển nhanh và nguồn nhân lực ổn định; .NET cũng hỗ trợ cross-platform, còn bản thân ngôn ngữ nhờ sự thanh lịch và hiệu quả nên giúp công việc dễ dàng hơn
  • Từng có trải nghiệm mô phỏng mã OS bằng Java ở đại học; có thể hiểu rằng Java giúp giảm độ phức tạp khi học các thuật toán trừu tượng, nhưng cá nhân vẫn nghĩ Python sẽ phù hợp hơn; khó đồng tình với việc giáo dục nhập môn ở đại học cứ khăng khăng dùng Java chỉ vì ảnh hưởng từ công nghiệp; ở cấp ba đã học BASIC và C, nên việc mô phỏng mã OS mức thấp bằng Java khiến cảm giác như bị lùi lại một bước
    • Có trải nghiệm ở đại học học vi điều khiển bằng C, cấu trúc dữ liệu/OOP bằng Java, và các khái niệm hệ thống/OS/đồng thời bằng C cùng hợp ngữ MIPS; trong cấu trúc dữ liệu/thuật toán, Java tốt hơn Python ở chỗ tách bạch rõ kiểu trừu tượng và cấu trúc, nên giúp hình thành khái niệm chính xác hơn; nhưng dạy khái niệm OS bằng Java thì có phần hơi quá
    • Cho rằng những nhược điểm Joel nhắc tới về việc dạy Java cũng áp dụng được cho các ngôn ngữ bậc cao khác như Python, và mỉa mai ở chỗ MapReduce (Google làm bằng Java) lại đi trước Microsoft
  • Thừa nhận Java là một thành công lớn, nhưng vẫn còn cảm giác phản cảm sâu sắc vì nhiều lý do: di sản từ code dài dòng ở các tập đoàn lớn, framework phức tạp, code chất lượng thấp; ghét văn hóa nơi code bị “đùn ra như than đá”, mất hết cá tính và đam mê; JVM là hộp đen bên trong nên khó debug bằng các công cụ như strace, gdb; việc cấp phát bộ nhớ dư thừa khiến kernel khó nắm bắt workload; khi dùng JVM nếu không có chuyên gia hỗ trợ thì cảm thấy nguy cơ gặp vấn đề nghiêm trọng rất cao; rồi còn Oracle, giấy phép, quản lý phiên bản JDK, hình ảnh không còn “ngầu” vào năm 2025, và việc code legacy cản trở; cá nhân đã xây dựng sự nghiệp trong khi tránh Java tối đa, còn hiện nay xu hướng là có nhiều ngôn ngữ hiệu năng cao dựa trên biên dịch tĩnh và file thực thi nhỏ với độ phức tạp vận hành thấp hơn, nên vai trò của các giải pháp như JVM hay Python VM cũng đang dần thu hẹp
    • JVM cung cấp các tính năng debug động thuộc hàng tốt nhất thế giới như restart theo frame, đổi giá trị biến, breakpoint theo exception; khả năng tích hợp với các IDE như Idea/Eclipse cũng không ngôn ngữ nào sánh bằng; các công cụ chẩn đoán như JMX/JConsole, Java Flight Recorder, jstack, HPROF cũng rất phong phú; giấy phép thì là open source và không có hạn chế sử dụng, còn việc mua Oracle JVM chỉ là lựa chọn tự nguyện; cũng đặt câu hỏi rằng vấn đề code legacy ở đây cụ thể là gì
    • Cho rằng lập luận JAVA không còn “ngầu” là không thuyết phục; thay vì strace/gdb, các công cụ JDK và IDE áp đảo về hiệu quả
    • Dù ban đầu công cụ có vẻ khó, nhưng khi quen rồi thì lại dễ dùng; tuning GC trên JVM chỉ cần một tuần là có thể thành chuyên gia; GC ở cấp ứng dụng có ngữ cảnh tốt hơn kernel nên trên thực tế mang lại nhiều lợi ích, dù vẫn thừa nhận là việc provisioning có thể phức tạp hơn đôi chút
    • Đã dùng Java hơn 20 năm nhưng chưa từng cần strace/gdb, còn hỗ trợ debug/IDE thì cực mạnh; việc đặt Python và JVM lên cùng một mặt bằng về hiệu năng là không phù hợp
    • Có vẻ nhận định đó xuất phát từ việc thực tế chưa dùng Java nhiều, và một lần nữa khẳng định công cụ debug/chẩn đoán của Java là hàng đầu
  • Có người nhắc rằng khi còn ở Sun, Gosling từng đồng thiết kế hệ thống cửa sổ NeWS; NeWS dựa trên PostScript với cấu trúc cho phép client gửi chương trình lên server; khi Gosling thiết kế Java, có thể thấy dấu vết của mong muốn xem trang web như một thứ có thể lập trình, giống NeWS; thực tế khi hỏi trong cuốn "The Java Programming Language" có chữ ký tác giả rằng “Java có phải là màn trả thù của NeWS không?”, Gosling chỉ mỉm cười đáp lại
    • Giờ đây X đã có Wayland, còn NeWS thì như có hậu duệ là trình duyệt + JavaScript (PWA, Electron); xét việc cách làm kiểu NeWS dường như cuối cùng cũng thắng ngay cả trong môi trường Microsoft, có người tò mò Gosling nghĩ gì
    • Tương tự cũng từng có Display PostScript; trên bộ đôi SPARCStation+SPARCprinter thì toàn bộ logic in ấn được xử lý ở server, nên chỉ cần server hoặc printer hỏng là cả hệ thống tê liệt; việc tích hợp print server với printer là cơn ác mộng khiến cuối cùng chỉ càng mất niềm tin vào máy in; vẫn nhớ SunOS và hệ sinh thái SPARC, nhưng riêng Display PostScript thì rất vui khi đã tiễn biệt nó
  • Đã dành phần lớn sự nghiệp để code trên JVM; gần đây dùng Scala, Clojure (ưa thích), Kotlin thay cho Java; mới đây sau khi thất nghiệp đã nhận lời mời làm việc với Python; thấy nhu cầu với kinh nghiệm JVM đang giảm; dù sao thì chỉ cần có lương, ngôn ngữ nào cũng được; hiện dự án cá nhân đang làm bằng Scala
 
roxie 2025-05-26

Có vẻ có phe C# đang ẩn mình ở giữa nhỉ