thảo luận Có nên học Java hay không?

  • Người tạo chủ đề Người tạo chủ đề drnoxxx
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.

drnoxxx

Senior Member
Đây là câu hỏi hay gặp của các bạn newbie. Với những bạn mới tiếp cận Java mà search sơ sơ trên internet thì sẽ thấy Java là cái gì đó rất cũ kỹ, rất cổ xưa, rất "legacy"... Nói chung Java là dành cho người già, giới trẻ nên học cái gì hype hơn thời thượng hơn như NodeJs, Go, Rust...

Search tài liệu thì các bạn chỉ thấy các tutorial cực kỳ cổ xưa, làm những trang web bằng JSP/Servlet, package ra WAR file rồi deploy trên các servlet container như Tomcat, Jetty... So boring, chán bỏ con mẹ ra, học Java làm éo gì? :amazed:

Nhưng! Nhưng Java hiện đại rất rất khác, chỉ có điều với ecosystem cực khủng và số lượng tài liệu cực kỳ đồ sộ các bạn newbie sẽ chết chìm trong dòng thác lũ thông tin trước khi code được một dòng code Java tử tế. Cho nên để dẫn đường cho các bạn tôi sẽ tóm tắt một số cái chính trong hệ sinh thái Java kinh khủng khiếp kia để các bạn có thể biết đường mà tự bơi.


1. JDK - Java Development Kit​

Java từ cái hồi Oracle đổi license phức tạp vcl
1. OpenJDK là bản open-source, chỉ có source code, thằng này của community, không của riêng thằng nào.

2. Oracle mang OpenJDK về build ra binary đặt tên là Oracle OpenJDK - bản này free. Ngoài ra còn một phiên bản enterprise là Oracle JDK - bản này phải mua, có thêm thắt mấy cái của riêng Oracle và dc support.

3. Community lấy OpenJDK build ra binary gọi là AdoptOpenJDK - cái này free. Hiện tại recommend dùng thằng này.

4. RedHat cũng mang OpenJDK về build binary riêng, cái này RedHat hỗ trợ.

5. Azul mang OpenJDK về thêm thắt một số tính năng build ra binary, bản free là Zulu, bản enterprise là Zing.

6. Mấy anh khác cũng mang OpenJDK về build và phát hành binary của riêng mình.

Về thương hiệu
Cái tên Java SE hiện tại chỉ có Oracle dc dùng, mấy anh khác muốn dùng phải mua quyền. Anh nào không mua quyền thì chỉ được gọi là Java SE compability.

Tóm lại
OpenJDK là source-based, cái này phiên bản chuẩn.
Các anh tự đem về thêm mắm muối build ra binary.
Oracle có 2 bản binary là Oracle OpenJDK và Oracle JDK.
Java SE là thương hiệu của riêng Oracle, mấy anh khác không mua quyền thì chỉ dc gọi là Java SE compability.

2. J2SE, J2EE, J2ME, Java SE, Java EE, Java ME​

J2SE, J2EE, J2ME là tên gọi cũ quên nó đi, reset khỏi não đi.

Java ME coi như chết đem chôn rồi, quên luôn đi.

Java EE thì Oracle đã donate cho community, coi như rũ bỏ trách nhiệm. Hiện tại đã đổi tên thành Jakarta EE và là dự án 100% community-driven.

Java SE cái này mới là cái còn lại của Oracle và vẫn do Oracle nắm. Java SE là thương hiệu có bản quyền của Oracle, cấm anh nào nhận vơ.

3. Nhập môn Java​

Đầu tiên để bước vào thế giới Java thì phải học Java SE hay chính xác hơn là học Java language cái đã.

Từ Java 9, Oracle đã thay đổi chu kì phát hành. Từ Java 8 trở về trước thì vài năm mới có một phiên bản mới, còn kể từ Java 9 thì cứ 8 tháng là Oracle cho ra một phiên bản mới và cứ khoảng 3 năm lại có một bản LTS (Long-Term Support).

Hiện tại (01/2021) bản mới nhất là Java 15, còn phiên bản LTS là Java 8 và Java 11. Tôi recommend các bạn sử dụng Java 11 LTS cho production, còn bản Java 15 để vọc vạch feature mới.

3.1. Cài đặt JDK​

Hiện nay recommend sử dụng AdoptOpenJDK (https://adoptopenjdk.net/) thay vì Oracle JDK.
Chọn Java 11 và JVM HotSpot.

3.2. Cài đặt IDE​

Java hiện nay có 3 IDE lớn là IntelliJ IDEA, Eclipse và NetBeans. Tôi recommend dùng IntelliJ đơn giản vì nó tốt nhất.
Ngoài IDE nên cài thêm một text editor để xem code nhanh khi cần thiết tôi recommend Sublime Text vì nó nhanh nhẹ.

3.3. Học gì đầu tiên?​

Chẳng nơi nào tốt hơn học từ chính thằng cha dượng của Java (Oracle)
https://docs.oracle.com/javase/tutorial/index.html

Tuy tutorial của Oracle viết rất cô đọng súc tích nhưng sẽ khó cho người mới nên tôi recommend đọc cuốn "Core Java" của Cay S. Horstmann.
https://horstmann.com/corejava/

Ngoài ra tôi recommend cuốn "Java How to Program" của Deitel.
https://deitel.com/java-how-to-program-11-e-early-objects-version/

Ok với 3 tài liệu phía trên đã đủ cho bạn học Java nhưng phải học gì đầu tiên?
Các bạn chỉ cần học phần ngôn ngữ nắm chắc class, object, inheritance, polymorphism là đủ (khoảng 4-5 chương đầu của Core Java). Các tính năng advanced hơn của ngôn ngữ như lambda, default method... chưa cần thiết ngay.

4. Học cơ bản Java SE rồi thì học gì nữa?​

//...

//... từ từ update tiếp
 
Sửa lần cuối:
Jdk oracle free bản mới nhất mà nhỉ?
Giờ lên trang chủ download bản 15 về bt.
Chỉ có down bản cũ hơn 15 thì phải có tài khoản enterprise nên tìm adoptopenjdk down về cho lẹ.
Stable với long term support thì có bản 11. Nhưng mà vẫn có nhiều người xài bản 8.
Adoptopenjdk thì thấy có 2 loại jvm: một là hotspot cấu hình mặc định, hai là openj9 do IBM tối ưu để giảm dung lượng tiêu thụ bù lại performance ko cao bằng.
Ngoài ra còn có graalvm cũng tối ưu và hỗ trợ đa ngôn ngữ, đặc biệt là js, nhưng chưa có tương thích với java bằng 2 loại kia nên thấy ít ai xài.
 
Jdk oracle free bản mới nhất mà nhỉ?
Giờ lên trang chủ download bản 15 về bt.
Chỉ có down bản cũ hơn 15 thì phải có tài khoản enterprise nên tìm adoptopenjdk down về cho lẹ.
Stable với long term support thì có bản 11. Nhưng mà vẫn có nhiều người xài bản 8.
Adoptopenjdk thì thấy có 2 loại jvm: một là hotspot cấu hình mặc định, hai là openj9 do IBM tối ưu để giảm dung lượng tiêu thụ bù lại performance ko cao bằng.
Ngoài ra còn có graalvm cũng tối ưu và hỗ trợ đa ngôn ngữ, đặc biệt là js, nhưng chưa có tương thích với java bằng 2 loại kia nên thấy ít ai xài.
Đúng rồi nó cho down free bản mới nhất nhưng hết thời gian hỗ trợ nó off luôn không hỗ trợ. Muốn hỗ trợ phải bỏ tiền. Các thằng to to đều tự mang source code Java về tự build vd như Amazon cũng có một bản JDK riêng là Corretto.
GraalVM lại là một thứ hoàn toàn khác, nó là dự án mới của Oracle để đẩy mạnh Java trên môi trường cloud, function, serverless...
 
Đây là câu hỏi hay gặp của các bạn newbie. Với những bạn mới tiếp cận Java mà search sơ sơ trên internet thì sẽ thấy Java là cái gì đó rất cũ kỹ, rất cổ xưa, rất "legacy"... Nói chung Java là dành cho người già, giới trẻ nên học cái gì hype hơn thời thượng hơn như NodeJs, Go, Rust...

Search tài liệu thì các bạn chỉ thấy các tutorial cực kỳ cổ xưa, làm những trang web bằng JSP/Servlet, package ra WAR file rồi deploy trên các servlet container như Tomcat, Jetty... So boring, chán bỏ con mẹ ra, học Java làm éo gì? :amazed:

Nhưng! Nhưng Java hiện đại rất rất khác, chỉ có điều với ecosystem cực khủng và số lượng tài liệu cực kỳ đồ sộ các bạn newbie sẽ chết chìm trong dòng thác lũ thông tin trước khi code được một dòng code Java tử tế. Cho nên để dẫn đường cho các bạn tôi sẽ tóm tắt một số cái chính trong hệ sinh thái Java kinh khủng khiếp kia để các bạn có thể biết đường mà tự bơi.


1. JDK - Java Development Kit​

Java từ cái hồi Oracle đổi license phức tạp vcl
1. OpenJDK là bản open-source, chỉ có source code, thằng này của community, không của riêng thằng nào.

2. Oracle mang OpenJDK về build ra binary đặt tên là Oracle OpenJDK - bản này free. Ngoài ra còn một phiên bản enterprise là Oracle JDK - bản này phải mua, có thêm thắt mấy cái của riêng Oracle và dc support.

3. Community lấy OpenJDK build ra binary gọi là AdoptOpenJDK - cái này free. Hiện tại recommend dùng thằng này.

4. RedHat cũng mang OpenJDK về build binary riêng, cái này RedHat hỗ trợ.

5. Azul mang OpenJDK về thêm thắt một số tính năng build ra binary, bản free là Zulu, bản enterprise là Zing.

6. Mấy anh khác cũng mang OpenJDK về build và phát hành binary của riêng mình.

Về thương hiệu
Cái tên Java SE hiện tại chỉ có Oracle dc dùng, mấy anh khác muốn dùng phải mua quyền. Anh nào không mua quyền thì chỉ được gọi là Java SE compability.

Tóm lại
OpenJDK là source-based, cái này phiên bản chuẩn.
Các anh tự đem về thêm mắm muối build ra binary.
Oracle có 2 bản binary là Oracle OpenJDK và Oracle JDK.
Java SE là thương hiệu của riêng Oracle, mấy anh khác không mua quyền thì chỉ dc gọi là Java SE compability.

2. J2SE, J2EE, J2ME, Java SE, Java EE, Java ME​

J2SE, J2EE, J2ME là tên gọi cũ quên nó đi, reset khỏi não đi.

Java ME coi như chết đem chôn rồi, quên luôn đi.

Java EE thì Oracle đã donate cho community, coi như rũ bỏ trách nhiệm. Hiện tại đã đổi tên thành Jakarta EE và là dự án 100% community-driven.

Java SE cái này mới là cái còn lại của Oracle và vẫn do Oracle nắm. Java SE là thương hiệu có bản quyền của Oracle, cấm anh nào nhận vơ.

//... từ từ update tiếp
hay quá fen , hóng phần tiếp theo :beauty:

Sent from Jarvis via nextVOZ
 
hiện tại giờ em thấy đang hot cái Java Spring Boot. thì cái này là gì vậy các bác? em làm FE nên ko rành về cái này? nó có giống như DotNet ko nhỉ?
 
hiện tại giờ em thấy đang hot cái Java Spring Boot. thì cái này là gì vậy các bác? em làm FE nên ko rành về cái này? nó có giống như DotNet ko nhỉ?
.NET (Core) thì phải so sánh với JVM (Java Virtual Machine) + JDK (Java Development Kit)
Spring Boot thì gần tương đương với ASP.NET (Core). Spring (Boot) rộng hơn ASP.NET (Core) nhiều vì ngoài web nó còn hỗ trợ nhiều cái khác. Phần này mình sẽ viết kỹ hơn sau.
 
Lêu lêu dùng đồ cũ :shame:

Giờ dùng Java 8 là thấy đồ cổ lắm rồi, giờ bắt tôi dùng 7 chắc tôi tự cắn d** mà chết :too_sad:
Đang xài downgrade version nên chỉ support java 7. Project trc thì xài java 8.
Hên là dùng https://gosu-lang.github.io/ chứ ko phải java, cú pháp như java 10 có thêm enhancement, typekey typelist các kiểu nên hên chưa bị lụt.
Khổ dâm nhất là cty cũ production xài java 3, nhớ có vụ xử lý ảnh upload mà ko support, tìm cách upgrade lên java 4 mà ko đc, tiết lộ là cty xài java 3 đang là một cty bảo hiểm nhân thọ có xuất xứ China.
 
bài viết chi tiết quá, em học xong java core và giờ đang hoc spring boot. Trong spring boot này cần nắm vững những thứ gì hả các bác
 
Jdk oracle free bản mới nhất mà nhỉ?
Giờ lên trang chủ download bản 15 về bt.
Chỉ có down bản cũ hơn 15 thì phải có tài khoản enterprise nên tìm adoptopenjdk down về cho lẹ.
Stable với long term support thì có bản 11. Nhưng mà vẫn có nhiều người xài bản 8.
Adoptopenjdk thì thấy có 2 loại jvm: một là hotspot cấu hình mặc định, hai là openj9 do IBM tối ưu để giảm dung lượng tiêu thụ bù lại performance ko cao bằng.
Ngoài ra còn có graalvm cũng tối ưu và hỗ trợ đa ngôn ngữ, đặc biệt là js, nhưng chưa có tương thích với java bằng 2 loại kia nên thấy ít ai xài.
thì vậy. nhưng enterprise thì jdk 8 hoặc 11 thôi. đầy cty dùng 6, 7
 
Cũng đang làm Java, nhớ lại hồi sinh viên phân vân không biết nên chọn theo Java hay C#, cuối cùng chọn Java vì hay viết code kiểu

Java:
public void run() {
    
}
jbJjmTi.png
 
bài viết chi tiết quá, em học xong java core và giờ đang hoc spring boot. Trong spring boot này cần nắm vững những thứ gì hả các bác

Tui cũng mới bắt đầu học spring nên ko rành lắm. Biết chút chút thôi.
Cơ bản nhất thì lên spring.io mà tìm tutorial để học làm quen. Vd như hello world, access data jpa, làm quen với thymeleaf, viết rest api,...
https://spring.io/quickstart - Hello World
https://spring.io/guides/gs/accessing-data-jpa/ - access data jpa
https://spring.io/guides/tutorials/rest/ - Rest API

Ko cần hiểu hết, chủ yếu tập làm quen với config của spring boot, maven pom, spring initializer.

Sau đó thì lên github tìm cái project spring kinh điển là spring pet clinic, rồi clone về ngâm cứu
https://github.com/spring-projects/spring-petclinic

Tutorial thì có vài trang của anh em người Việt như:
https://hellokoding.com/
hoặc https://bezkoder.com/category/spring/

đọc thêm về spring security thì có mấy bài guides của Marco Behler khá hay:
https://www.marcobehler.com/guides/spring-security

Khoá học thì thử qua mấy khoá này trên udemy, cách vài tuần là nó sale còn cỡ $10-15 à:
https://www.udemy.com/course/spring-framework-5-beginner-to-guru/
https://www.udemy.com/course/spring-hibernate-tutorial/

Ngoài ra thì còn cần khả năng google để tìm hiểu thêm, ko nhất thiết phải làm theo tutorial.
 
Tui cũng mới bắt đầu học spring nên ko rành lắm. Biết chút chút thôi.
Cơ bản nhất thì lên spring.io mà tìm tutorial để học làm quen. Vd như hello world, access data jpa, làm quen với thymeleaf, viết rest api,...
https://spring.io/quickstart - Hello World
https://spring.io/guides/gs/accessing-data-jpa/ - access data jpa
https://spring.io/guides/tutorials/rest/ - Rest API

Ko cần hiểu hết, chủ yếu tập làm quen với config của spring boot, maven pom, spring initializer.

Sau đó thì lên github tìm cái project spring kinh điển là spring pet clinic, rồi clone về ngâm cứu
https://github.com/spring-projects/spring-petclinic

Tutorial thì có vài trang của anh em người Việt như:
https://hellokoding.com/
hoặc https://bezkoder.com/category/spring/

đọc thêm về spring security thì có mấy bài guides của Marco Behler khá hay:
https://www.marcobehler.com/guides/spring-security

Khoá học thì thử qua mấy khoá này trên udemy, cách vài tuần là nó sale còn cỡ $10-15 à:
https://www.udemy.com/course/spring-framework-5-beginner-to-guru/
https://www.udemy.com/course/spring-hibernate-tutorial/

Ngoài ra thì còn cần khả năng google để tìm hiểu thêm, ko nhất thiết phải làm theo tutorial.
thank bác ạ, tại em mới học xong phần RESTful API nên còn nhiều bỡ ngỡ.
 
thank bác ạ, tại em mới học xong phần RESTful API nên còn nhiều bỡ ngỡ.
Spring nó phức tạp không phải vì bản thân nó phức tạp mà là vì nó có quá nhiều tài liệu nhưng các tài liệu này lại không cover đầy đủ hoặc nói rất vắn tắt. Ngoài ra còn có nhiều tài liệu của nhiều phiên bản nên cảm thấy rối.
 
Spring nó phức tạp không phải vì bản thân nó phức tạp mà là vì nó có quá nhiều tài liệu nhưng các tài liệu này lại không cover đầy đủ hoặc nói rất vắn tắt. Ngoài ra còn có nhiều tài liệu của nhiều phiên bản nên cảm thấy rối.
Đúng rồi bác, cảm thấy loạn khi tìm tài liệu học ạ

via theNEXTvoz for iPhone
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
drnoxxx,
Người trả lời cuối
Fire Of Heart,
Trả lời
148
Lượt xem
43.754
Quay lại
Lên đầu trang