2009-04-16 26 views
10

Tôi khá mới đối với lập trình Java (khoảng 2 năm) nhưng không phát triển web. Tôi bắt đầu với HTML và ASP (trước .NET), và gần đây đã bắt đầu rối tung với J2EE. Tôi cảm thấy như tôi có một nắm bắt tốt về JSP/Servlets (tôi thấy chúng tương tự như ASP) và gần đây đã bắt đầu làm việc với JSF và Facelets. Mặc dù tôi có thể thấy tại sao mọi người lại thích JSF, nhưng tôi thấy nó là một gánh nặng lớn và nó thực sự làm chậm thời gian phát triển của tôi. Tôi tưởng tượng điều này là do các đường cong học tập, nhưng tôi thường thấy mình nghĩ rằng tôi sẽ được hoàn thành với một trang/nhiệm vụ nếu tôi chỉ sử dụng JSP/Servlets.Các khung công tác web Java có thực sự đáng giá không?

Điều này có phổ biến với những người trong số các bạn đã dành thời gian tìm hiểu một khuôn khổ không? Bạn đã bao giờ đầu tư thời gian vào việc học một khuôn khổ và một khi bạn đã thành thạo trong nó, chỉ cần quyết định quay trở lại một phương pháp mà không phải là tinh vi nhưng bạn cảm thấy thoải mái với?

Tôi cũng đang đặt câu hỏi liệu tôi có chọn đúng khung không. Tôi đã thực sự hy vọng tìm thấy thứ gì đó không can thiệp vào việc thêm các khả năng AJAX.

Trả lời

12

JSF có thể khó khăn để bắt đầu và khó học hơn nhiều khung công tác web Java. Bạn có thể thấy dễ dàng hơn khi sử dụng JSF với Seam, nó đơn giản hóa nhiều cách bạn làm việc với JSF, và thay thế JSP bằng Facelets, đó là một cải tiến lớn.

Ngoài ra, bạn có thể dùng thử SpringMVC, rất nhiều người dễ sử dụng hơn.

+1

Tôi thấy đường cong học tập JSF là VERY dốc, nhưng khi tôi tìm ra cách sử dụng nó, tôi thực sự thích nó. –

+0

Tôi thứ hai.Rất khó để tìm hiểu, nhưng một khi bạn đã có nó, nó là một công cụ thực sự tuyệt vời. –

+1

+1 đồng ý, thêm ajax lên trên đó và bạn sẽ muốn tự sát trong thời gian ngắn. – Alex

5

Tôi đã sử dụng facelets trong hơn một năm. Một trong những ưu điểm chính mà tôi thấy trong khung công tác web Java là nó giúp giữ mã sạch sẽ và khuyến khích tái sử dụng. Ví dụ, trong facelets, bạn không nhận được bất kỳ tập lệnh nào trong các trang của bạn giống như bạn làm trong JSP. Tôi đã thấy các tệp ASP trong sản xuất dài hơn 3000 dòng. Không có gì sai với ASP hoặc JSP, nhưng nó làm cho nó khá dễ dàng để gộp một số logic kinh doanh trong trang. Không hại gì, đúng không? Cho đến khi người khác phải duy trì nó.

Hầu hết các khung công cụ đều cố gắng 'giúp đỡ' bạn giữ tách biệt nghiêm ngặt MVC hoặc bất kỳ mô hình nào mà chúng ưa thích, dẫn đến mẫu sạch hơn (jsp, facelets, bất kỳ điều gì) và mã doanh nghiệp và tên miền tự động kiểm tra đơn vị. Sử dụng nhiều khung công tác có thể mất nhiều thời gian hơn một chút, nhưng tiết kiệm cho bạn nhiều lần khi nói đến bảo trì và tái cấu trúc.

1

Tôi nghĩ câu trả lời dễ là - bạn sẽ kiểm tra nó như thế nào và xác minh nó hoạt động khi bạn thực hiện thay đổi?

Đây là nơi các giải pháp dễ dàng bị hỏng và bạn kết thúc ở địa ngục bảo trì. Thật không may :(

0

SpringMVC là giá trị phức tạp. J2EE thì không.

+0

Tại sao J2EE không đáng để gặp rắc rối? JEE phức tạp hơn rất nhiều so với J2EE, nhưng ngay cả J2EE cũng sử dụng nó. – vickirk

1

Tôi nghĩ rằng điều này phụ thuộc vào việc khuôn khổ thực sự giải quyết một "bài toán khó" cho bạn, và giải quyết nó một cách dễ dàng. Mọi người luôn tìm thấy điều này một khủng khiếp điều gây tranh cãi để nói vì lý do nào đó, nhưng hầu hết các khuôn khổ tôi đã xem xét sử dụng tôi đã kết thúc bỏ qua nửa chừng bởi vì nó chỉ dễ dàng hơn để viết một số mã để làm chính xác những gì tôi muốn

Sau đó, khi tôi có một vấn đề trong mã của tôi, tôi chỉ có thể đi đến nơi mà vấn đề là và thêm một dòng mã để sửa chữa nó, thay vì lội qua các trang tài liệu để tìm tham số cấu hình ma thuật. em với (chèn khung yêu thích), tôi thường tìm thấy tôi p * ssing xung quanh cho lứa tuổi khi vấn đề cơ bản mà khuôn khổ là vụ phải giải quyết không bao giờ là phức tạp ở nơi đầu tiên.

Khung yêu thích vô dụng của tôi là các khung yêu cầu nhiều cấu hình và mã bản mẫu vụng về để thực hiện các tác vụ cơ bản như gửi một số byte xuống ổ cắm hoặc nhồi một số thông số vào một câu lệnh đã chuẩn bị và kích hoạt nó. Một trong những mục yêu thích của tôi là toàn bộ bè "công nghệ XML", đặc biệt là các công nghệ "có thể cắm" hoặc "có thể cấu hình" được. (Tại sao tôi muốn một "khung phân tích cú pháp có thể cắm" chứ không chỉ là một trình phân tích cú pháp luôn hoạt động ...?) Gọi tôi là Victor Meldrew, nhưng thật tuyệt vời khi mọi người có thể biến vấn đề biểu thức chính quy trong 10 phút thành 2 ngày như thế nào- làm-bạn-thực hiện-này-khuôn khổ-với-X-in-the-tiêu đề-do-nó vấn đề.

Bây giờ đã nói, có những người hoàn toàn phát triển mạnh vào mùa xuân, Hibernate, JSF, MVCJammer, Joomajamaventilate, mọi thứ với 'X' trong họ vv v.v. Vì vậy rõ ràng đối với một số người trong một số trường hợp, họ là một phép lạ, và tôi chỉ bỏ lỡ cuộc sống.

Có thể điều đó phụ thuộc vào việc bạn hoặc tổ chức của bạn chủ yếu có trải nghiệm "cấu hình" và "kết nối mọi thứ cùng nhau" hoặc trải nghiệm "lập trình"? Tôi cho rằng tôi có nhiều thứ sau.

1

Lời khuyên của tôi: cảm thấy thoải mái với nhiều khung công tác khác nhau, và biết cách để bàn tay của bạn bẩn và tự viết nó. Bạn sẽ phát triển một số cách yêu thích để làm việc, nhưng bạn sẽ hiểu rõ về những công cụ có thể làm và những gì họ không thể làm. Và bạn cũng sẽ phát triển một con mắt cho khi nào là đúng thời điểm để sử dụng một khuôn khổ, và khi nào là đúng thời điểm không.

Tôi đã nhận thấy rằng JSF và Facelets chắc chắn đáng giá, nếu bạn có thể sống sót trong đường cong học tập. Nó khá dốc, nhưng khi bạn tìm ra, nó rất dễ làm việc. Họ làm cho việc quản lý các đối tượng phạm vi phiên và ứng dụng dễ dàng hơn nhiều so với JSP và servlet thô, và tôi thấy rằng tôi có thể viết Java sạch hơn khi tôi không phải suy nghĩ về web trong logic nghiệp vụ. Nói chung, tôi thấy rằng các khuôn khổ giúp tôi tổ chức các suy nghĩ của mình (và bằng cách mở rộng, mã của tôi) một cách nhất quán, dễ hiểu.

Facelets, cụ thể là công cụ mẫu web yêu thích của tôi. Tôi thích thực tế rằng các trang của tôi là hợp lệ XML và tôi không có tập lệnh nào cả. Nó làm cho mã sạch hơn và dễ dàng hơn để theo dõi nếu bạn biết khuôn khổ. Có đường cong học tập đó một lần nữa.

Bằng cách này, việc thêm AJAX vào Facelets thật dễ dàng nếu bạn sử dụng một cái gì đó như RichFaces hoặc IceFaces. Chúng có sẵn các thành phần ajax mà bạn có thể dễ dàng thêm vào ứng dụng của mình.

Điều đó nói rằng, nó không phải là tốt nhất cho tất cả các dự án, YMMV, v.v. Vào cuối ngày, sử dụng bất kỳ khung là một cuộc gọi phán xét. Nếu nó không giúp bạn giải quyết vấn đề của bạn, thì nó không đáng giá. Đừng chiến đấu với các công cụ của bạn, sử dụng chúng một cách chính xác. Nếu công cụ theo cách của bạn, hãy sử dụng một công cụ khác. JSF và facelets thực sự không phải là lựa chọn rất tốt trên một ứng dụng rất nhỏ. Họ không thực sự đi vào riêng của họ cho đến khi bạn có một mô hình miền khá phức tạp và logic kinh doanh phức tạp. Về cơ bản, bạn cần dự án đủ phức tạp để khắc phục số lượng mã soạn sẵn mà bạn cần phải viết để bắt đầu.

1

Tôi là SpringMVC thứ hai. Nó rất dễ hiểu và mã rất ngữ nghĩa nếu bạn sử dụng annotations. Giống như những người Budweiser commercials ... Servlets quá nhẹ ... Struts quá nặng.

Tôi ước Java có Giàn giáo. Nó có thể với Grails, nhưng đó là một khuôn khổ khác để nhúng trong một khung công tác.

Các vấn đề liên quan