2009-08-06 22 views
27

Tôi là một nhà phát triển web Java thời gian dài và như hầu hết các nhà phát triển web, tôi đã sử dụng khá nhiều JavaScript. Mặc dù tôi không ghét JavaScript như nhiều nhà phát triển Java khác, tôi vẫn nhận thức được lỗi của nó.Có ai đã sử dụng GWT và có thể nói nó thực sự cung cấp những gì nó hứa hẹn?

GWT là cách viết javascript bằng java. Vì tôi biết cả hai ngôn ngữ trong một thời gian dài nên tôi khá hoài nghi về yêu sách này. Ý tôi là, tôi có một thời gian khó tin rằng bạn thực sự có thể tạo ra các ứng dụng web động Java đầy đủ với một GUI phong phú chỉ sử dụng GWT. Đó là lý do tại sao tôi hỏi ở đây nếu có ai đó có cơ hội làm việc với GWT trên một dự án quy mô lớn. Nếu vậy, tôi thực sự muốn nghe những gì họ nghĩ về nó.

+4

Tại sao đóng? Điều này trông giống như một câu hỏi thú vị với tôi .. –

+2

Một số người có thói quen xấu khi nhấp vào 'đóng' nếu họ không thích câu hỏi. Tôi không nghĩ rằng đây là subjetive cũng không tranh luận ở tất cả các –

+2

Bạn đã kết thúc bằng cách sử dụng GWT? Nó đã cung cấp? – HDave

Trả lời

38

Tôi đã viết ứng dụng có kích thước khá lớn trong GWT và tôi phải nói rằng tôi thậm chí còn ấn tượng hơn với GWT hơn là khi dự án bắt đầu. Nói chung của tôi 'cảm thấy' của nền tảng là những điều thực sự tốt nghĩ ra, và họ không làm những điều trừ khi họ có thể làm tốt, và có thể làm tốt trên tất cả các trình duyệt (người dùng IE vẫn là người dùng của bạn!)

Bây giờ, hãy nhớ rằng những gì GWT thực sự vượt trội là tạo ra các ứng dụng web kiểu trang đơn lớn, có tính động cao. Nếu mục tiêu của bạn là để tăng cường một trang khác tĩnh với một số hiệu ứng javascript, hơn GWT là lớn quá mức cần thiết (gquery có thể thay đổi điều này, nhưng tôi không có kinh nghiệm với gquery)

Một số tính năng mà tôi được hưởng bao gồm:

  • Khả năng chia sẻ mã giữa phía máy chủ và phía máy khách. (nếu phía máy chủ của bạn được viết bằng java, tất nhiên). Tôi đã không mong đợi để sử dụng rất nhiều điều này lúc đầu, nhưng trong thực tế, nó thực sự có thể tiết kiệm rất nhiều bản sao mã. Tuy nhiên, tôi thấy rằng nói chung, điều này chỉ làm việc với mã đã được viết với GWT trong tâm trí - sử dụng mã mà không được viết với GWT trong tâm trí thường không hoạt động tốt. Điều này là do GWT chỉ có một tập con của các lớp trong JDK, và trong javascript, bạn phải quan tâm đến hiệu suất nhiều hơn bạn làm ở phía máy chủ.
  • Nó nhằm mục đích để đạt được javascript nhanh nhất, nhanh hơn bạn đã bao giờ viết bằng tay (bởi vì nếu bạn đã viết nó bằng tay, mã sẽ là unmaintainable).Thực tế không may là các trình duyệt mà nhiều người sử dụng có công cụ javascript cực kỳ chậm, do đó hiệu suất của mã javascript của bạn rất quan trọng. Trình biên dịch của Gwt là một trình biên dịch tối ưu hóa thực sự - nó sẽ nội tuyến các phương thức, thực tập tất cả các chuỗi của bạn. devirtualize các cuộc gọi phương thức của bạn khi có thể, vv Bởi vì bạn đang biên dịch cho mỗi trình duyệt và ngôn ngữ, trình biên dịch cũng có thể mã nội bộ cụ thể cho từng trình duyệt và mã miền cụ thể. Điều này Google I/O presentation có một số điểm chuẩn một vài trang trình bày.
  • Nó cũng sẽ tự động ghép hình ảnh của bạn lại với nhau để giảm thiểu số lượng yêu cầu http cần thiết, một lần nữa cải thiện tốc độ trang web của bạn. GWT 2.0 sẽ cho phép bạn kết hợp các tệp tùy ý với nhau.
  • hầu hết các tệp được tạo bởi gwt có băm mạnh làm tên tệp, cho phép bạn đặt các tệp được lưu vào bộ nhớ cache vĩnh viễn, nhưng đừng lo lắng về những người có phiên bản cũ nếu tệp thay đổi
  • Tách mã trong GWT 2.0 rất ấn tượng và sẽ rất khó làm bằng tay. Khi kích thước ứng dụng của bạn phát triển, việc xử lý kích thước của javascript của bạn ngày càng trở nên quan trọng và bạn cần phải chia nhỏ thành các phần
  • Bạn đang viết mã bằng ngôn ngữ được nhập tĩnh. Tôi biết một số người thích đánh máy năng động, nhưng tôi thích so sánh cuộc tranh luận này với các cuộc tranh luận về emacs vs vi - có rất nhiều người thông minh ở cả hai phe và tranh cãi trên internet sẽ không thay đổi sở thích của bất kỳ ai có thể sử dụng rất nhiều công cụ tuyệt vời tồn tại trong hệ sinh thái java, thường rất trưởng thành hơn so với các công cụ javascript bình đẳng. - junit, java IDE, trình gỡ rối java, tái cấu trúc, v.v.
+3

Ồ, và tôi đoán nhược điểm lớn nhất là: - chế độ lưu trữ thời gian được lưu trữ rất tuyệt, nhưng hiện tại bạn không thể sử dụng nó cho trình duyệt không mặc định của hệ thống - GWT 2.0 và chế độ lưu trữ quá trình sẽ khắc phục điều này. - Ngôn ngữ java có thể được tiết ra nhiều lần, mặc dù đó là xa một showstopper. (gwt cho scala sẽ là awfully đẹp :)) – Chi

2

Tôi đã xem xét nó một thời gian ngắn cho một ứng dụng cũ hơn tại một trong các công việc của tôi, và tôi phải thừa nhận rằng nó rất ấn tượng. Tất cả các mã được viết bằng Java, và javascript được xây dựng đẹp mắt.

Nó có AJAX, trang động, công trình. Có các plugin cho nó, chẳng hạn như khung Ext GWT.

Chắc chắn đáng xem xét và thử nghiệm, nhưng bạn có thể thấy rằng chu kỳ phát triển không "cảm thấy" đúng, vì vậy bạn có thể chọn sử dụng JavaScript thông thường.

+3

điểm tốt về môi trường dev "cảm thấy". GWT chắc chắn chỉ dành cho những người thích/chịu đựng các ràng buộc của một ngôn ngữ như Java. –

4

Giống như với bất kỳ công cụ nào, nó cần được sử dụng đúng cách. Người ta có thể sử dụng một cây búa khéo léo và xây dựng một cái gì đó tốt đẹp, hoặc chỉ vẫy nó xung quanh tại công cụ và làm hại nhiều hơn tốt.

Google Wave, tôi nghĩ, đã trở thành nguyên mẫu của "những gì có thể" với GWT.

Vẫn khó tìm các mẫu thiết kế GWT tốt vì công nghệ quá mới, để có thể gây hại cho việc phát triển một ứng dụng web rất phong phú, có quy mô lớn trong GWT. Trước khi bắt đầu một dự án như vậy, tôi khuyên bạn nên xem xét các ví dụ về mẫu mô hình-xem-người trình bày (MVP) và chắc chắn sử dụng nó, hoặc một cái gì đó giống như nó, làm nền tảng cho luồng điều khiển của ứng dụng web của bạn. Một điều tốt đẹp về GWT, và viết mã của bạn trong Java, là mức độ trừu tượng cao và tách cần thiết cho việc thực thi MVP sạch sẽ khá dễ dàng (nhờ trình biên dịch).

5

Nếu bạn đã quen với cả JavaScript và Java, bạn thực sự hoàn toàn phù hợp để tận dụng tối đa GWT. Điều mà nhiều người không nhận ra là GWT được xếp lớp khá tốt và bạn thực sự có thể quyết định mức độ nào bạn muốn làm việc.

Ví dụ: đôi khi tôi viết trực tiếp thư viện DOM cho dự án. Thats rất nhiều như viết mã JavaScript, ngoại trừ bạn có thể sử dụng một IDE đúng và có được sức mạnh của một trình biên dịch. Từ trình biên dịch tôi nhận được kiểm tra loại tĩnh, rất nhiều tối ưu hóa trình biên dịch tốt, và (thực sự yêu thích của tôi cho việc duy trì mã) xác nhận chế độ gỡ lỗi. Không ai thực sự tạo ra nhiều khả năng để thực hiện các xác nhận, nhưng thật tuyệt khi có thể biên dịch một chế độ gỡ lỗi kiểm tra tốn kém để trêu chọc các lỗi và sau đó tắt chế độ gỡ lỗi và có mã chỉ bay hơi. (Không chỉ các câu lệnh khẳng định biến mất, nhưng tất cả mã có thể truy cập được từ các xác nhận cũng được biên dịch).

Lần khác, tôi viết mã chống lại thư viện giao diện người dùng của GWT. Mã đó trông hơi giống như mã swing hoặc SWT, vì vậy nó rất thoải mái với các nhà phát triển java thuần túy. Làm việc ở cấp độ này, bạn không phải lo lắng nhiều về DOM và thường có thể xây dựng một ứng dụng mà không cần viết bất kỳ JavaScript nào. Đôi khi bạn gặp phải lỗi trong đó một thứ không hoạt động liên tục trên một trình duyệt cụ thể. Các folks GWT xem xét những lỗi.

Bạn có thể chọn mức độ trừu tượng bạn muốn làm việc. Có sự cân bằng ở mỗi cấp, nhưng GWT nên hỗ trợ chúng.

Ngoài ra, hãy tiết lộ đầy đủ: Tôi là anh chàng trong video mà Chi đã liên kết ở trên, vì vậy bạn có thể nói rằng tôi khá gắn bó với GWT.

3

Tôi đã tạo hai ứng dụng GWT khá đáng kể trong ba năm của mình tại Google. Nó cung cấp những gì nó hứa hẹn - các ứng dụng của tôi tương tác nhiều hơn và nhiều hơn nữa ajax-y hơn kiến ​​thức của tôi về Javascript và công cụ Javascript của tôi sẽ cho phép tôi sản xuất bằng các công cụ khác.

Tôi cũng thấy các ứng dụng tương tác và thú vị hơn các lựa chọn thay thế hoàn toàn phía máy chủ mà tôi đã sử dụng trước khi chuyển sang ứng dụng.

Nó không phải là miễn phí của mụn cóc, nhưng nó là một môi trường rất hiệu quả để làm các loại ứng dụng tôi làm.

Và xem phần trình bày của Kelly. Nó, và một số người khác từ I/O, đưa ra một ý tưởng thực sự rõ ràng về những gì GWT có thể làm. Bạn sẽ nhanh chóng nhận được một ý tưởng tốt cho dù đó là công cụ thích hợp cho công việc bạn đang hình dung.

1

Tôi đã phát triển một ứng dụng thực địa xanh trên GWT trong một năm và điều đó thật đáng ngạc nhiên. Các tập hợp con của Java được sử dụng trong GWT gây ra một số nhức đầu nhưng không có gì lớn sau khi tất cả. Tôi không có quá nhiều kiến ​​thức về JavaScript khi tham gia dự án nhưng tôi nghĩ đó không phải là vấn đề.

Các vấn đề liên quan đến GWT phổ biến mà tôi gặp phải thường có liên quan đến khung công tác Ext GWT/GXT hoặc tích hợp FCKEditor.

1

Đơn giản chỉ cần GWT đá google đang thực hiện "google wave" hoàn toàn trên GWT.

4

Tôi nghĩ GWT làm những gì nó nói trên tin ...

Top 5 lý do cho việc lựa chọn GWT:

  1. Tapestry có thể quá phức tạp và đường cong học tập là khá dốc cho các nhà phát triển mới đang bắt đầu \ tham gia nhóm. Esp. trên các dự án lớn hơn.

  2. Tôi thấy rằng tôi có thể phát triển các ứng dụng "phong phú hơn" bằng cách sử dụng GWT thấy rằng sức mạnh của tôi là Java không phải Javascript. Để tôi có thể thực hiện chức năng tương tự bằng Tapestry, tôi sẽ phải viết Javascript để sau này trở thành một cơn ác mộng bảo trì.

  3. khả năng tương thích trình duyệt, tôi sẽ dành một lượng lớn thời gian cố gắng để có được bàn tay của tôi được viết Javascirpt để làm việc trên tất cả các trình duyệt khác nhau (như tôi đã nói Javascript không phải là sức mạnh của tôi :-) Các GWT Compiler giấu tôi khỏi này mà kết quả trong tôi dành nhiều thời gian viết các tính năng hơn.

  4. Blues nút quay lại, Trình nghe lịch sử của GWT xử lý nút quay lại trình duyệt so với Tapestry.

  5. GWT có dấu chân nhỏ hơn vì chỉ có dữ liệu được gửi qua dây được tạo ra để làm mới toàn bộ trang.

Danh sách vẫn tiếp tục nhưng tất cả trong tất cả, tôi rất vui vì đã thực hiện thay đổi và không nhìn lại từ đó.

1

Tôi không biết nhiều Javascript khi cố gắng tạo trang web của mình. Trong thực tế, đó là lý do tại sao tôi đã tạo ra trang web. Vì vậy, đối với tôi, GWT tạo ra sự khác biệt rất lớn vì nó cho phép tôi tạo ra một trang web động, qua trình duyệt mà tôi chắc chắn sẽ không thể tạo mà không cần nỗ lực đáng kể vào việc học Javascript.

0

Tôi đã thực hiện một vài dự án trong vài năm và điều đó thật tuyệt vời. Trở lại khung công tác dựa trên JS/JSP/yêu cầu thực sự là khủng khiếp.

Không muốn từ bỏ việc kiểm tra thời gian biên dịch, kiểm thử đơn vị trong IDE, tái cấu trúc IDE, chia sẻ mã giữa các tầng khác nhau, bộ tiện ích con rắn, khuôn khổ được nghĩ ra cực kỳ tốt.

Có thể làm như vậy nhanh hơn rất nhiều theo cách có thể bảo trì.

0

Có một đường cong học tập dốc, nhưng đối với các ứng dụng ui thực sự năng động, không có cách nào mà bạn có thể xây dựng từ tay trong javascript một cách hiệu quả. Những gì tôi có ý nghĩa đặc biệt là ví dụ một lối vào ứng dụng cho một dịch vụ mà tất cả các lĩnh vực tìm kiếm và loại kết quả và chiều dài đã hoàn toàn không rõ. Đối với loại điều này, một thời gian chạy động được xác định ui, không có gì tốt hơn GWT theo ý kiến ​​của tôi.

Những hạn chế là đường cong học tập dốc (đặc biệt là đối với các lập trình viên Java không xoay, yêu cầu/đáp ứng truyền thống servlet api và các cô gái) và bị dồn vào GWT khi bạn đưa ra quyết định đó.

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