Phát triển web Java EE, tôi phải bắt đầu từ đâu và tôi cần những kỹ năng gì? [đóng cửa]


215

Tôi muốn tìm hiểu, ít nhất là ở mức cơ bản, cách xây dựng các ứng dụng web Java (đến từ nền .NET). Tôi muốn có thể xây dựng, triển khai một ứng dụng loại CMS đơn giản từ đầu.

Chính xác thì tôi cần học gì?

Tomcat dường như là một máy chủ web tốt cho Java.

Có những lựa chọn nào cho web? Tôi biết có Hibernate cho một ORM.

Java có MVC không? Thế còn JSP ? MVC và JSP có thể được cùng nhau? NetBeans ?

Có lẽ một cuốn sách bao gồm tất cả những điều này?

Câu trả lời:


260

(Cập nhật tháng 3 năm 2020)

Trước hết, "Java EE" kể từ tháng 9 năm 2019 đã được đổi tên thành " Jakarta EE ", bắt đầu từ phiên bản 8. Trong lịch sử, cũng có thuật ngữ "J2EE" bao gồm các phiên bản 1.2 cho đến 1.4. "Java EE" bao gồm các phiên bản 5 đến 8. Xem thêm Nền tảng Java, Phiên bản doanh nghiệp, Lịch sử trên Wikipedia .

Chính xác thì tôi cần học gì?

Tôi cho rằng bạn đã quen thuộc với các công nghệ phía máy khách như HTML , CSSJS , vì vậy tôi sẽ không đi sâu vào chi tiết đó. Tôi cũng cho rằng bạn đã quen thuộc với Java cơ bản. Thực hiện theo Hướng dẫn Java của Oracle và nếu có thể, hãy đi lấy sách hoặc khóa học OCP .

Sau đó, bạn có thể bắt đầu với JSP / Servlet để tìm hiểu các khái niệm cơ bản về phát triển web Java. Các hướng dẫn tốt có thể được tìm thấy trong hướng dẫn Java EE 5 của Phần II chương 3 - 8 và tại Coreservlets.com ( Sơ cấp-Trung cấpNâng cao, cũng là JDBC ). Lưu ý rằng kể từ Java EE 6, JSP đã bị xóa khỏi hướng dẫn Java EE có lợi cho JSF và về cơ bản, JSP đã không thay đổi kể từ đó. Đó là lý do tại sao bạn có thể sử dụng hướng dẫn Java EE 5 khá cũ cho việc này. Hầu hết các điều quan trọng đối với JSP với là một thực tế mà viết mã Java đơn giản trong các tập tin JSP sử dụng <%scriptlets %>chính thức được nản chí từ năm 2003. Xem thêm Làm thế nào để tránh mã Java trong các tập tin JSP? Vì vậy, bất kỳ hướng dẫn nào vẫn bao gồm các tập lệnh nên được bỏ qua vì chúng chắc chắn sẽ đưa bạn vào vòng xoáy đi xuống của việc học các thực hành xấu.

Ở đây trên Stack Overflow, bạn cũng có thể tìm thấy các trang wiki đẹp về JSP , Servlets , JSTLEL nơi bạn có thể tìm hiểu các yếu tố cần thiết và tìm các liên kết hữu ích hơn.


Tomcat dường như là một máy chủ web tốt cho Java.

Nó là. Tuy nhiên, nó bị hạn chế về khả năng. Về cơ bản, nó là một thùng chứa servlet barebones, chỉ triển khai các phần JSP / Servlet của API Java EE khổng lồ. Nếu bạn từng muốn đi EJB hoặc JPA, thì bạn muốn chọn một cái khác, ví dụ WildFly , TomEE , Payara , Liberty , WebLogic , v.v. Nếu không, bạn phải sử dụng Spring thay vì Java EE. Cụ thể là không thể cài đặt EJB trong thùng chứa servlet barebones mà không sửa đổi công cụ cốt lõi, trong trường hợp Tomcat về cơ bản sẽ phát minh lại TomEE. Xem thêm Chính xác Java EE là gì? , Làm cách nào để cài đặt và định cấu hình đúng các thư viện JSF qua Maven? Cách cài đặt và sử dụng CDI trên Tomcat?


Tôi biết có Hibernate cho một ORM.

Trước đây, trong kỷ nguyên J2EE, khi JPA không tồn tại và EJB2 rất tệ, Hibernate là một khung độc lập và thường được sử dụng kết hợp với Spring để thay thế EJB. Kể từ khi giới thiệu JPA trong Java EE 5 (2006), Hibernate đã trở thành một triển khai JPA. Bạn có thể học JPA tại hướng dẫn Jakarta EE phần VIII . Ngoài ra, EJB3 đã được cải thiện rất nhiều dựa trên những bài học rút ra từ Spring. Xem thêm Khi nào cần thiết hoặc thuận tiện để sử dụng Spring hoặc EJB3 hoặc tất cả chúng cùng nhau?


Java có MVC không? Thế còn JSP? MVC và JSP có thể được cùng nhau? JavaBeans?

Bạn có thể , nhưng đó là rất nhiều sự tái phát minh của bánh xe khi nói đến việc buộc mô hình với chế độ xem (chuyển đổi, xác nhận, thay đổi người nghe, v.v.). Khung MVC của Java EE được gọi là JSF . Trước Java EE 6, nó được sử dụng để chạy trên JSP, đây là một công nghệ xem khá kế thừa. JSP được thay thế bởi Facelets . Bạn có thể tìm hiểu JSF tại Jakarta EE hướng dẫn phần III chương 7 - 17 . Nhân tiện, bạn cũng có thể sử dụng JSF trên Tomcat, bạn chỉ phải cài đặt riêng. Hướng dẫn cài đặt có thể được tìm thấy tại trang chủ Mojarra. WildFly, TomEE, Payara, Liberty, WebLogic, v.v ... là một triển khai Java EE hoàn chỉnh đã cung cấp JSF (và CDI, BV, JSONP, JAX-RS, EJB, JPA, v.v.), vì vậy bạn không cần phải cài đặt riêng Xem thêm Làm thế nào để cài đặt và cấu hình đúng các thư viện JSF qua Maven?


Có lẽ một cuốn sách bao gồm tất cả những điều này?

Có một vài cuốn sách. Tôi khuyên bạn nên bắt đầu với một cuốn sách tập trung vào Jakarta EE nói chung , một cuốn sách tập trung hơn vào JSF và một cuốn sách tập trung hơn vào JPA . Đảm bảo rằng bạn chọn cuốn sách gần đây nhất về chủ đề này. Đầu tiên điều tra phiên bản có sẵn gần đây nhất và sau đó đảm bảo rằng cuốn sách được chọn bao gồm điều đó. Do đó, chắc chắn không chọn một cuốn sách cũ cho Java EE 5 hoặc JSF 1.0 hoặc hơn trong khi hiện tại đã có Jakarta EE 8 và JSF 2.3.

Cuối cùng nhưng không kém phần quan trọng, vui lòng bỏ qua các trang web cạo đoạn mã được duy trì bởi những người nghiệp dư tập trung chủ yếu vào thu nhập quảng cáo thay vì giảng dạy, chẳng hạn như roseindia, guidespoint, javabeat, journaldev, javatpoint, codejava, v.v. biểu ngữ và đoạn mã JSP chứa scriptlets .

Xem thêm:


Tuyệt vời! hữu ích, cảm ơn bạn Trong .Net, thông thường cuốn sách của Digitx có thể bao gồm tất cả các kiến ​​thức trong .net. Một cuốn sách rất dày.
gfan

5
StackOverflow không có tính năng Ghim bài? Ước gì nó đã làm, vì vậy tôi có thể ghim câu trả lời này. Cảm ơn!
ngày

Có một cách thay thế cho hướng dẫn JavaEE 5. Tôi biết tôi là một người mới và rất tốt về điều đó. Nhưng ... Cố gắng học hỏi từ hướng dẫn đó. Nó rất khóa và phụ thuộc vào các cài đặt nhất định. Vì vậy, tôi cần học NetBeans. sau đó tôi cần phải từ bỏ máy chủ của mình và hoàn toàn chuyển sang cá thủy tinh, cố gắng tìm ra mẫu mã để chạy và học từ đó không phải là dễ nhất. Tôi không thể chạy trên máy chủ. thay vào đó tôi đã gặp một thứ gọi là maven build. Tôi nghĩ rằng tôi đã thử mà kết quả là nhật thực đi nutz! aparently tôi cũng cần phải học maven, và cái này, rằng cái kia và lũ quỷ lớn ...
brat

@brat: câu trả lời chứa các liên kết đến các lựa chọn thay thế và sách.
BalusC

Tốt. Chỉ có một bao gồm nhiều. Coreserv ... Phải nhặt những đoạn ở đây và kia. Tôi đi đầy đủ với các officiall JavaEE tut bây giờ :) Chỉ cần để tìm hiểu SDK một nhu cầu để tải về, để chạy mã ví dụ có một máy chủ GlassFish rằng công việc doesnt với JDK 10 :(, NullPointerException lúc khởi động. Tìm thấy một hack stackoverflow.com / question / 47458119 / Mạnh và vì vậy tôi cần tải xuống ... vân vân và vân vân. Tôi đoán tôi chỉ hơi suy sụp một chút và bitchy vì phải nhảy qua hoops để học. :( Họ không làm cho nó dễ dàng noobs x). Chúc mừng :)
nhóc

28

Chính xác thì tôi cần học gì?

Tối thiểu

  • Java ngôn ngữ
  • Java API, bao gồm JDBC để truy cập cơ sở dữ liệu
  • Một IDE, hoặc một trình soạn thảo văn bản + Ant
  • Java EE, về cơ bản, các servlet và JSP
  • Một thùng chứa servlet (như Tomcat)

Tomcat dường như là một máy chủ web tốt cho Java.

Nó là "đàng hoàng". Nếu bạn không tham gia EJB, có lẽ bạn sẽ không cần phải học bất cứ điều gì khác. Glassfish 3 gần đây có vẻ khá tuyệt, nhưng tôi chưa chơi với nó nhiều. Lưu ý, nó "nhiều" hơn một máy chủ web. Nó là một thùng chứa servlet (có nghĩa là nó có thể chạy các ứng dụng bằng công nghệ servlet).

Có những lựa chọn nào cho web?

Khoảng một trăm khung khác nhau. Thực sự, chọn một là thực sự "khó khăn". Sẽ rất hấp dẫn để thử tất cả, nhưng cuối cùng không khả thi.

Tôi biết có ngủ đông cho một ORM.

Tôi hơi chống ORM, nhưng Hibernate là thứ bạn cần nếu bạn cần một ORM "đầy đủ". Bạn cũng có thể thử các ORM "một phần", chẳng hạn như hỗ trợ JDBC của Spring hoặc iBatis.

Java có MVC không? Thế còn JSP? MVC và JSP có thể được cùng nhau? đậu?

Có, hầu hết các khung web Java đều làm MVC. MVC của Spring rất hay, nhưng tôi không thể đề xuất bất cứ điều gì khác (đặc biệt, không phải Struts 1!). JSP chỉ là một công cụ tạo khuôn mẫu HTML (hoặc XML). JSP trường học cũ, với mã Java nhúng là không hợp lệ; JSP hiện đại với các tệp thẻ và thư viện là khá tốt.

Tôi cho rằng hầu hết các khung công tác sẽ cho phép bạn sử dụng JSP để hiển thị Vs; MVC của Spring và Struts làm. Một số sẽ cho phép bạn sử dụng một cái gì đó khác (Velocity, Freemarker, v.v.).

Đậu chỉ là một quy ước cho các đối tượng. Về cơ bản, điều đó có nghĩa là bạn đang sử dụng getters và setters (hoặc một số lựa chọn thay thế) và bạn đang tuân theo một số quy tắc. Chúng nên để đối tượng của bạn được thao tác bởi các công cụ nhất định. Ví dụ điển hình là GUI, một số công cụ sẽ cho phép bạn xây dựng các thành phần GUI để chỉnh sửa các bean tùy ý (tức là chúng sẽ hiển thị một biểu mẫu để chỉnh sửa các trường của nó).


16

Bạn cần HTML, CSS và JavaScript - tất cả các nghi ngờ thông thường để phát triển web.

Tomcat có một máy chủ web được tích hợp sẵn, nhưng đó là một công cụ servlet / JSP . Apache là máy chủ web thuần túy.

Bạn cần phải học JSP, đây là ngôn ngữ tạo khuôn mẫu để tạo các servlet tạo đầu ra HTML. Bạn sẽ muốn viết chúng bằng JSTL, không phải scriptlets.

Nếu bạn đang làm các ứng dụng CRUD, bạn sẽ cần tìm hiểu JDBC và cơ sở dữ liệu quan hệ. Bạn nên làm điều đó trước khi thử Hibernate hoặc bất kỳ ORM nào khác, bởi vì đó là nền tảng mà chúng được xây dựng.

JavaBeans chỉ là tiêu chuẩn cho các đối tượng Java.

Nếu bạn sẵn sàng, tôi khuyên bạn nên sử dụng khung Spring.


bạn nói tomcat có máy chủ web tích hợp, vậy thì còn gì nữa? Tôi nghĩ tất cả đó là một máy chủ web?
mrblah

6
@mrblah - Tomcat là một công cụ servlet. Nó được tạo ra để xử lý các lớp servlet (đó là những gì jsp được biến thành) và phục vụ đầu ra cho trình duyệt. Cùng với đó, nó cũng phục vụ tất cả các tệp thông thường (hình ảnh, html, css, v.v.) giống như một máy chủ web. Nó có thể so sánh với Apache với một mô-đun php.
Nemi

13

Java có MVC không?

Java có các khung khác nhau như Struts2 , Spring MVC

Thế còn JSP?

JSP là thư viện mẫu. Có một vài lựa chọn thay thế bạn có thể thử như FreeMarkerVelocity . AFAIK Freemarker là một thư viện mẫu tốt đang nổi lên. Nó nhẹ hơn so với JSP . Kiểm tra FreeMarker này : Một thay thế mở cho JSP - JavaWorld

MVC và JSP có thể được cùng nhau?

Tôi lấy MVC làm khung đã đề cập trước đó. Tất cả các khung công tác đều có hỗ trợ cho JSP nhưng bạn cần kiểm tra hỗ trợ cho các thư viện mẫu khác trong tài liệu khung tương ứng. AFAIK Struts2 để hỗ trợ Freemarker rất tốt.

đậu?

Tôi không biết nhiều về nó. Nhưng sử dụng đậu chúng ta có thể ánh xạ trực tiếp dữ liệu biểu mẫu vào cơ sở dữ liệu.

Có lẽ một cuốn sách bao gồm tất cả những điều này?

Mỗi khung có cuốn sách riêng của mình. Đối với Struts2 - Struts 2 đang hoạt động

Chuỗi MVC - Hãy xem những câu hỏi giới thiệu sách cho Spring và Spring MVC. Gợi ý sách cho khung mùa xuânSách mùa xuân: Chọn loại nào

Fremarker có một tài liệu rất tốt - Hướng dẫn sử dụng FreeMarker

Để bắt đầu phát triển web bằng Java -

văn bản thay thế

http://www.amazon.com/SCWCD-Exam-Study-Kit-Certification/dp/1930110596


5

Tôi coi hầu hết các tùy chọn phát triển web Java truyền thống là khá nặng và có một số lựa chọn thay thế tốt:

  • Play là một khung công tác MVC tập trung vào việc gọn nhẹ, đơn giản và cho phép phát triển nhanh chóng - trong khi vẫn gắn bó với Java thuần túy, trái ngược với ngôn ngữ dựa trên JVM năng động hơn. Nó khá mới nhưng đã rất ấn tượng và một cộng đồng tốt đã được xây dựng xung quanh nó một cách nhanh chóng.

  • Grails là một khung công tác MVC, được lấy cảm hứng từ Ruby on Rails, được viết và sử dụng, Groovy , một ngôn ngữ kịch bản dựa trên Java. Grails trưởng thành, mạnh mẽ và được tôn trọng rộng rãi, với một cộng đồng mạnh mẽ. Groovy về cơ bản là một siêu bộ của Java, với cú pháp tốt hơn và một số tính năng tuyệt vời như các bao đóng, vì vậy học nó là một cách tuyệt vời để học Java.

  • Nếu bạn cần / muốn xây dựng các trang web / dịch vụ / ứng dụng RESTful, Restlet là một khung tuyệt vời - Tôi là một fan hâm mộ lớn. Nó đơn giản, dễ hiểu và linh hoạt. Cộng đồng lớn quá.

  • Máy ứng dụng của Google cũng là một tùy chọn thú vị. Nó được lưu trữ, có thể có hoặc không đáng quan tâm, nhưng nó có API khá đơn giản và SDK tốt.

Tôi chắc chắn có những người khác, nhưng đây là những người tôi có thể nghĩ ra khỏi đỉnh đầu của tôi.

Chúc may mắn và vui vẻ!


Ồ, và tôi vừa phát hiện ra Prudence vào một ngày khác: threecrickets.com/prudence
Avi Flax

3

Tôi là một lập trình PHP / C và tôi đã tìm thấy Groovy cho phép tôi nhảy vào Java mà không cần học tất cả các lớp và mô thức vốn có trong lập trình java. Groovy cho phép tôi làm việc nhanh chóng, trong khi dành thời gian để tìm hiểu thêm về java và tất cả các công cụ / khung / thư viện có sẵn.


3

Nếu bạn không làm việc với html, css, xml, javascript, v.v.

Hãy thử khung Vaadin , nó được ghi chép tốt, dễ học và cho phép tạo giao diện người dùng đẹp mắt theo cách đơn giản. (chỉ cần viết mã Java, tất nhiên bạn cần một số máy chủ servlet, Tomcat hoặc Jetty sẽ ổn thôi)


2

Tốt hơn bạn nên học java. Sau đó, bạn học Servlets và JSP. Sau đó, bạn hãy vào MVC, bạn đi đến Struts hoặc Spring hoặc bất kỳ khung công tác java / java nào khác.


0

Vì bạn chưa quen với Java nên tôi thực sự khuyên bạn nên học ngôn ngữ cơ bản trước. Điều này sẽ giúp bạn bất kể bạn chọn công nghệ web nào để làm ứng dụng web của mình.

Một tài nguyên trực tuyến tốt là Hướng dẫn về Java của Sun - http://java.sun.com/docs/books/tutorial/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.