15 điểm bởi regentag 2024-11-06 | 62 bình luận | Chia sẻ qua WhatsApp

“Có hai loại ngôn ngữ lập trình: những ngôn ngữ mà mọi người phàn nàn về chúng, và những ngôn ngữ mà không ai sử dụng.” — Bjarne Stroustrup.

“Những người chỉ trích và phàn nàn về Java thường là người trẻ, và có vẻ như họ tiếp xúc với JavaScript nhiều hơn bất cứ thứ gì khác. So với JS, Java có thể hơi nặng nề và mang tính ràng buộc hơn. Boilerplate xuất hiện khắp nơi, cùng với hệ thống kiểu dữ liệu được trình biên dịch thực thi nghiêm ngặt. Nhưng nếu có quyền lựa chọn, tôi sẽ chọn một codebase Java chưa tối ưu thay vì JS. Không có gì phải nghi ngờ.”

Quảng cáo

“Chỉ sau khi có được trải nghiệm thực tế khi xử lý mã nguồn phân tán trên hàng chục hoặc hàng trăm tệp, bạn mới bắt đầu nhận ra rằng những cái gọi là 'ràng buộc' của Java thực ra là các cơ chế bảo vệ giúp bạn không tự bắn vào chân mình.”

“Việc khám phá lại Java và chuyển trở lại với nó giống như một sự khai sáng. Tôi nhận ra mình yêu Java và hệ sinh thái của nó. Vì vậy, tôi quyết định ghi lại một vài điều tôi thích nhất về hệ sinh thái Java. Thế nên nếu ai đó chê bai Java, đây là 25 lý do để nói cho họ biết vì sao họ đã sai.”

  1. Hệ sinh thái trưởng thành
  2. WRITE ONCE, RUN EVERYWHERE
  3. Khả năng tương thích ngược (Backward compatibility)
  4. Ngôn ngữ kiểu mạnh (Strongly Typed)
  5. Chu kỳ phát hành nhanh, cải tiến liên tục
  6. Các IDE tốt
  7. Hỗ trợ Native Image của GraalVM
  8. Các thư viện và framework mã nguồn mở
  9. Đa luồng
  10. Hướng đối tượng trưởng thành
  11. Quản lý bộ nhớ và garbage collection
  12. Observability và giám sát
  13. Hỗ trợ lập trình hàm
  14. Tài liệu phong phú
  15. Công cụ build và quản lý dependency
  16. Khả năng kiểm thử mạnh mẽ
  17. Cộng đồng khổng lồ
  18. Annotation
  19. Tính năng bảo mật
  20. Bộ API phong phú
  21. Hiệu năng
  22. Đồng thời có cấu trúc
  23. Virtual thread
  24. Pattern matching cho câu lệnh switch
  25. String template

62 bình luận

 
suckjava 2025-09-24

Tất cả những điểm được liệt kê là ưu điểm của Java thực ra lại có vẻ là những điểm mà các ngôn ngữ khác còn làm tốt hơn nhiều so với Java.

 
sungwoo 2024-11-14

Không thấy ai nhắc đến Spring cả.
Bản thân tôi không có phàn nàn gì về chính ngôn ngữ Java,
nhưng thực tế trong nước là phải học Spring khiến tôi cảm thấy khá ngột ngạt, nên thấy nó không còn hấp dẫn lắm.

 
regentag 2024-11-14

Java thì tốt nhưng Spring thì... kinh khủng T_T

 
nullvana 2024-11-08

Cả 25 lý do đều không có gì khác biệt. Tách riêng chuyện tôn trọng ra, đây là bầy linh cẩu trong một bữa tiệc di sản legacy.

 
fau1ty 2024-11-07

Dù có đưa ra đến 25 lý do vì sao nó vẫn phổ biến vào năm 2024,
nhưng có vẻ cũng có đủ ngôn ngữ khác để thay thế, không nhất thiết phải là Java...

 
lazyhack 2024-11-07

Thứ phổ biến là JVM thôi

 
sunrabbit 2024-11-07

Phần lớn các lý do này, khi so với hệ sinh thái của nhiều ngôn ngữ hiện đại khác,
không hẳn là điểm mạnh đáng kể; có vẻ như tác giả đã viết bài mà không tách bạch giữa Spring và Java.

 
progdesigner 2024-11-07

Việc ngôn ngữ Java được ưa chuộng là điều đương nhiên vì môi trường phát triển của nó đã được hoàn thiện rất tốt.

Tương tự, vì chỉ khi làm việc trong chính môi trường đó mới có thể đạt hiệu suất cao nên người ta cũng muốn chỉ làm trong môi trường ấy, và nếu bị yêu cầu sang môi trường khác thì cũng dễ nảy sinh cảm giác phản cảm.

Tuy vậy, về sau AI sẽ ngày càng giỏi viết code cho những ngôn ngữ như thế này, và có vẻ khả năng thích nghi để tồn tại được trong nhiều môi trường khác nhau thay vì chỉ môi trường mình quen thuộc sẽ cần thiết hơn bao giờ hết.

Xét ở góc độ đó, khả năng thích nghi với nhiều ngôn ngữ giờ đây dường như không còn là lựa chọn mà là điều bắt buộc.

 
love7peace 2024-11-06

Nếu phải làm web app kiểu entries thì tôi gần như chắc chắn sẽ dùng Java. Chỉ riêng lý do số 1 là đủ rồi... Nếu là phát triển đơn giản, phát triển nhanh thì có vẻ Python là lựa chọn tốt. Còn JS thì... tôi thấy nó rườm rà nên khá bực.

 
newmanjoo 2024-11-06

Nếu làm Java thì tôi sẽ chọn Kotlin; xét về ngôn ngữ, tôi cho rằng các ngôn ngữ thuộc hệ .NET là những ngôn ngữ đang theo kịp sự phát triển của Kotlin hơn là Java.
Có lẽ Java nên tiếp tục tồn tại như ngôn ngữ bảo trì cho các máy chủ cơ quan công quyền đã được xây dựng bằng Java từ trước; ở Hàn Quốc, các CEO có xu hướng cố chấp với Java chỉ vì đã quen với từ Java họ thấy trong quảng cáo. Hãy trải nghiệm Kotlin và .NET rồi hãy cân nhắc đến Java.

 
tsboard 2024-11-06

Các anh chị nhắc đến Java nên tôi cũng góp vài lời... Còn Go thì sao? Thật ra tôi thích Kotlin hơn Java, nhưng vì đã quá nhiều lần nếm trải cảm giác thất vọng với Gradle nên giờ gần như đã định cư với Go rồi.

Từ góc độ một người chỉ mới dùng qua trong thời gian ngắn, tôi từng nghĩ rằng: ở bất cứ đâu cần Java thì liệu Go cũng có thể bao phủ được không?

Với JS/TS thì tôi cũng thích, nhưng dù sao đi nữa, đặt nó lên cùng mặt bằng để so với Java thì có lẽ vẫn hơi gượng ép. Dù thế nào thì nó vẫn có ràng buộc của single-thread, và tuy người ta có nói đến chuyện multiprocessing bằng pm2 v.v., nhưng Java cũng đã hỗ trợ virtual thread rất tốt, và thật ra tôi còn thấy cách này tốt hơn. Tất nhiên, trong lúc suy nghĩ theo hướng đó rồi nhìn sang goroutine, cuối cùng tôi lại định cư với Go... haha;;

Tôi nghĩ nên sử dụng ngôn ngữ đúng chỗ, đúng nhu cầu. Ngay cả ở thời điểm năm 2024 này tôi vẫn yêu PHP, và cũng có thiện cảm với JS, Java(Kotlin), dù không bằng Go. Ngôn ngữ chỉ là công cụ, nên chỉ cần dùng tốt, đúng với mục đích của công cụ là được, vậy nên tôi để lại bình luận này.

 
shortstories 2024-11-07

Tôi nghĩ giờ nó đã thực sự đạt đến mức dùng rất ổn. Ở công ty, tôi cũng chỉ làm việc bằng go.
Hồi trước, vào thời còn dùng godep với glide, chỉ cần dependency lệch một chút là mất cả ngày để chắp vá cho khớp, đến mức tôi còn tự hỏi đây là một ngôn ngữ đúng nghĩa hay chỉ là thứ gì đó lưng chừng quanh ngôn ngữ nữa.. 😂

 
sunrabbit 2024-11-07

Dù có những hạn chế của single-thread, nhưng trong thời đại orchestration bằng cách bọc trong container để mỗi pod không ngốn CPU quá nhiều, thì tôi chỉ nghĩ rằng liệu hạn chế đó có còn lớn đến vậy không?

Nếu như container đó ngốn rất nhiều CPU thì còn khác, thay vì chạy nhiều container trên một server như trước đây.

Trong đa số trường hợp của web server, CPU không bị dùng quá nhiều mà throughput I/O mới là lớn, nên tôi nghĩ Node cũng có thể được xem là một trong những lựa chọn.

Tất nhiên, nếu là domain cần nhiều CPU thì có thể cân nhắc ngôn ngữ khác, hoặc gọi native code thông qua napi.

 
savvykang 2024-11-06

Tôi nghĩ đây là ngôn ngữ hữu ích cho các tác vụ bất đồng bộ vì có đặc điểm trừu tượng hóa rất tốt các công việc bất đồng bộ bằng goroutine. Mã bất đồng bộ của Rust hay Python có cảm giác như bị suy nghĩ quá mức. Có vẻ gánh nặng nhận thức khá cao cả khi viết lẫn khi đọc.

 
regentag 2024-11-06

Tôi chỉ từng dùng Go trước khi có generics, nhưng tôi nghĩ đó là một ngôn ngữ tuyệt vời. Ban đầu công cụ thực sự khá tệ, nhưng giờ đã cải thiện rất nhiều.

Cú pháp hơi thô, nhưng vì thế cũng dễ học.

 
seunghaekim 2024-11-06

Đừng cãi nhau mà....

 
moderator 2024-11-06

Cuộc thảo luận đang trở nên quá gay gắt.
Nếu có ý kiến phản biện, vui lòng chỉ nêu nội dung phản biện đó.
Các bình luận không phù hợp với quy định sử dụng trang đã bị xóa.
Ngoài ra, xin lưu ý rằng các tài khoản lặp lại hoạt động không phù hợp với quy định sử dụng đã bị chặn.
Mong mọi người thảo luận một cách lành mạnh.

 
[Bình luận này đã bị ẩn.]
 
regentag 2024-11-06

Java 1.8 thực sự là một phiên bản tuyệt vời!

 
roxie 2024-11-06

Tôi nghĩ khẩu hiệu write once run everywhere giờ cũng đến lúc nên cho nghỉ rồi nhỉ.. haha

 
regentag 2024-11-06

Nhưng đó là Java mà! hahaha

 
secret3056 2024-11-06

Viết Java trong IDEA thì rất thích, nhưng nếu không có IDEA chắc tôi đã khổ sở lắm. (Và đúng là đã từng khổ sở rồi)

 
tested 2024-11-06

Ở trong nước, do có lợi thế về tuyển dụng và còn có cả e-Government Framework nên thậm chí còn có câu nói đây là một “cộng hòa Java”, vì vậy số lượng lập trình viên Java là rất nhiều.
Trong doanh nghiệp cũng có nhiều trường hợp chuyển từ ngôn ngữ khác sang Java, nhưng theo kinh nghiệm của tôi thì một số? lập trình viên Java dường như chỉ muốn làm Java thôi.
Họ nói rằng hệ thống hiện có được xây bằng ngôn ngữ khác có vấn đề, cần phải chuyển sang Java. Nhưng rồi lại cũng không muốn làm cả Kotlin nữa.
Tôi có cảm giác họ có sự e dè với việc học cái mới. Kiểu như “đã có thể làm mọi thứ bằng Java rồi, còn tại sao phải làm thế nữa?”

 
[Bình luận này đã bị ẩn.]
 
dyumadel 2024-11-06

Những người làm SI thường không dùng generics phải không?

 
mse9000 2024-11-08

Có vẻ như ý bạn là đó mới chính là vấn đề... hahaha

 
everyharu 2024-11-06

Đến mức này thì có cảm giác Java như một tôn giáo vậy.
Nếu diễn giải ngược lại câu
Những người chỉ trích và than phiền về Java phần lớn là người trẻ, và có vẻ họ tiếp xúc với JavaScript nhiều hơn bất cứ thứ gì khác.
thì cũng có thể hiểu là chừng ấy người đã dùng qua js và từ trải nghiệm đó thấy rằng java không hay ho lắm.
Tại sao lại không thừa nhận rằng mỗi bên đều có ưu và nhược điểm riêng, mà chỉ toàn nói java tốt hơn...
Cũng khá giống với những người chưa từng dùng document db nhưng bất kể các đặc điểm ra sao vẫn cứ nói sql tốt hơn.

Có vẻ như người ta đang bỏ qua thực tế là đã từng có một giai đoạn java được dùng rất nhiều, và vì nhiều lập trình viên đàn anh chỉ biết mỗi java, lại không muốn thay đổi, nên mới không đổi được. Nhìn ở thời điểm hiện tại, tôi nghĩ những điểm mạnh chỉ riêng java mới có thì gần như không còn nữa.

 
cosine20 2024-11-06

Theo kinh nghiệm lâu năm của tôi, tôi nghĩ Python và JS mới là những thứ có tỷ lệ fan cuồng cao hơn.

 
kbumsik 2024-11-06

Có lẽ là vì họ ở vị thế cần quảng bá JS/Python thay vì ngôn ngữ Java, nên bạn có thể cảm thấy họ đưa ra nhiều lập luận hơn.

Cá nhân tôi thì cũng đã thấy một số người ngoài Java ra gần như không nghĩ đến ngôn ngữ nào khác. Còn những người làm các ngôn ngữ khác thì phần lớn đều có ý định dùng ngôn ngữ khác tùy theo tình huống.

 
cosine20 2024-11-06

Tôi cũng nghĩ nếu ngôn ngữ đầu tiên là Java thì có thể sẽ như vậy, nhưng quanh tôi chưa từng thấy trường hợp nào như thế nên khá khó hình dung.

Tôi cũng vậy, sau khi vào đại học thì ngôn ngữ đầu tiên học trên lớp là C++, rồi lên các năm trên tự nhiên tiếp xúc với những ngôn ngữ khác, nên tôi không thấy việc học ngôn ngữ mới là gánh nặng đến thế... Thật ra cú pháp cơ bản (khai báo biến, câu lệnh điều khiển, hàm, v.v.) của các ngôn ngữ đều na ná nhau cả.

Có lẽ trong những trường hợp đó là do khi mới học ngôn ngữ đã học theo cách quá hạn hẹp nên phổ tiếp cận bị thu hẹp chăng. Và tôi thấy điều đó nhiều hơn ở những người tiếp xúc với Python như ngôn ngữ đầu tiên vì mục đích deep learning hoặc thống kê toán. Bản thân tôi cũng vậy, mà vì đều là trải nghiệm cá nhân từ cả hai phía nên chắc cả hai cách nói đều có lý.

 
moderato 2024-11-06

Tôi cũng có trải nghiệm tương tự nên cũng nghĩ như vậy.

 
hobbycoder 2024-11-06

Những người thích Python thường không khẳng định Python là một ngôn ngữ tốt. Với JS cũng vậy, chẳng có ai cứ khăng khăng rằng bản thân ngôn ngữ đó là tốt cả. Chỉ là với Python hay JS, hệ sinh thái của chúng phù hợp để phát triển trong những lĩnh vực nhất định mà thôi. Riêng những người theo Java thì lại có cảm giác lúc nào cũng khăng khăng rằng nó tốt một cách vô điều kiện..

 
aer0700 2024-11-07

Ngay cả các lập trình viên js cũng thường đem Js ra làm trò đùa. Cái này mà cũng gọi là ngôn ngữ à... nếu không có ts thì hu hu

 
roxie 2024-11-06

Nếu cố bênh vực Java thì có vẻ ngược lại, riêng Java lại đặc biệt hay trở thành trò đùa vì đủ thứ lý do. Kiểu như ông chú hàng xóm mà ai cũng quen thuộc...?

 
kandk 2024-11-06

Dạo này khi tìm kiếm nội dung liên quan đến Java trên Google,
những bài blog tiếng Hàn na ná nhau như được học ở trung tâm cứ tràn ra,
khiến tôi bực mình vì rất khó tìm được tài liệu tham khảo tử tế.

 
regentag 2024-11-06

Tìm kiếm Google đã trở nên tệ đi khá nhiều...

 
jjpark78 2024-11-06

18, 25, 20, 10, 8, 6, 5, 3, 2, 1, vân vân không phải là đặc quyền riêng của Java. So sánh sai.

 
regentag 2024-11-06

Giờ nhìn lại thì Java cũng có những tính năng như vậy và không có lý do gì để bị chỉ trích; có vẻ đây không phải là câu chuyện rằng vì chỉ Java mới làm được nên hãy dùng Java.

 
lazydonkey456 2024-11-06

Ngược lại, càng đọc tôi chỉ càng nghĩ rằng… hừm, chẳng phải .NET tốt hơn sao?

 
regentag 2024-11-06

Tôi cũng thích C#, nhưng trong môi trường không phải Windows thì tôi thấy không nhất thiết phải dùng nó.

 
lazydonkey456 2024-11-07

Nội dung cũng giống như bình luận ở trên. Chuyện đó thực sự đã kết thúc từ rất lâu rồi.
Lựa chọn muộn màng của MS đã làm méo mó nhận thức của mọi người đến mức này.

 
rabbitcarrot 2024-11-06

Nếu chỉ làm ứng dụng Windows thì hệ sinh thái MS có nhiều lợi thế nên khá tốt, nhưng trên Linux hay macOS thì tôi thấy không có gì tốt hơn Java. Dù MS hỗ trợ muộn màng, cũng chẳng có lý do gì phải cố dùng nó. Thời điểm không tốt lắm

 
lazydonkey456 2024-11-07

Đây không còn là .NET của thời .NET Framework nữa, sao lại giới hạn nó trong ứng dụng Windows?
Ngay trên chiếc điện thoại mà mọi người đang cầm trên tay, một game engine dựa trên .NET đã và đang chạy rồi đấy;

 
leetleet 2024-11-06

222

 
bichi 2024-11-06

333

 
gigisusu8888 2024-11-06

Không phải là chê Java, mà lý do Java gây khó chịu là vì chỉ các lập trình viên Java mới đặc biệt hay hạ thấp, so sánh với lập trình viên ngôn ngữ khác và có một kiểu tự hào về Java rất kỳ lạ. Tôi thích Java, nhưng thật sự không hiểu vì sao họ lại như vậy. Mỗi ngôn ngữ đều có triết lý riêng, có ưu và nhược điểm riêng, và hệ sinh thái cũng chỉ khác nhau mà thôi, nhưng họ lại đột ngột bộc lộ một kiểu tự hào Java kỳ quặc nên tạo cảm giác khó chịu.

 
fooandbar 2024-11-06

Có vẻ cần có tài liệu làm căn cứ để các lập trình viên Java đưa ra niềm tự hào về Java. Nếu khó có thể đưa ra được, thì tôi cho rằng đó là một lập luận khó chấp nhận.

 
regentag 2024-11-06

Có vẻ ngôn ngữ hay công cụ nào cũng đều có những người như vậy. Có lẽ Java nổi bật hơn vì vào thời điểm ra mắt, nó là một ngôn ngữ thời thượng hơn so với C/C++, lại được sử dụng rộng rãi cho doanh nghiệp nên cộng đồng lập trình viên đông đảo hơn.

Và dạo này có vẻ như các lập trình viên Rust đang đảm nhận vai trò đó.

 
puersum 2024-11-06

Điều đáng ngạc nhiên là lý do Java trở thành xu hướng chủ đạo là vì họ đã chi cực kỳ nhiều tiền cho marketing thôi đó lol
https://www.youtube.com/watch?v=NVuTBL09Dn4

 
puersum 2024-11-06

Có một video YouTube về cách một ngôn ngữ trở thành xu hướng chủ đạo, mọi người xem thử chắc cũng sẽ thấy thú vị!
https://www.youtube.com/watch?v=QyJZzq0v7Z4

 
limc132 2024-11-06

Bạn nên trút bực vào lập trình viên Java, nhưng lại trút lên Java...

 
gigisusu8888 2024-11-06

Đó là do khả năng đọc hiểu của bên đó…

 
limc132 2024-11-06

Tôi chưa kịp trả lời thì đã có người khác viết giúp rồi.

 
gigisusu8888 2024-11-06

Không phải vậy đâu?

 
secret3056 2024-11-06

Lý do Java gây khó chịu là

 
gigisusu8888 2024-11-06

Có vẻ như còn không biết "năng lực đọc hiểu" là gì?

 
kayws426 2024-11-06

Chợt nghĩ đến Eclipse được tạo bằng Java và VSCode được tạo bằng JavaScript (TypeScript)... liệu đây có phải là một so sánh khập khiễng không. Tất nhiên, Eclipse có nhiều tính năng hơn.

 
koxel 2024-11-06

So sánh như vậy là sai..
Phải nhìn vào thời điểm nó ra mắt chứ.
Sau khi Eclipse xuất hiện, trong một thời gian Eclipse từng có vị thế giống như VSCode bây giờ.
Bản thân tôi cũng thấy Eclipse rất bất tiện nên không dùng,
nhưng vào thời đó thì gần như không có lựa chọn nào dùng được ngoài Eclipse.

 
[Bình luận này đã bị ẩn.]
 
[Bình luận này đã bị ẩn.]
 
kandk 2024-11-06

Điểm mạnh của JavaScript là công cụ V8 được Google quản lý.
Java bị bỏ rơi..

 
lazydonkey456 2024-11-06

Backend của ứng dụng Electron đúng là JavaScript mà.. tiến trình chính và tiến trình renderer chạy riêng, nhưng cả hai đều hoạt động bằng mã JavaScript.

Tương tự vậy, chẳng phải JVM cuối cùng cũng là một runtime được triển khai bằng native sao?