2009-02-19 38 views
28

Gần đây tôi đã sử dụng một ứng dụng Java Web Start. Tôi đã khởi chạy nó từ trình duyệt web của mình bằng cách sử dụng liên kết jnlp được nhúng trong trang tôi đang xem. Ứng dụng đã được tải xuống, khởi chạy và hoạt động tốt. Nó có quyền truy cập vào hệ thống tệp cục bộ của tôi và ghi nhớ các tùy chọn của tôi khi khởi động lại nó.Bắt đầu với Java Web - Mức độ phổ biến

Điều tôi muốn biết là tại sao các ứng dụng Java Web Start không phải là định dạng phân phối phổ biến hơn cho các ứng dụng phức tạp trên web? Tại sao các nhà phát triển thường dành thời gian đáng kể & chức năng sao chép năng lượng cho máy tính để bàn trong html/javascript khi sức mạnh của một ứng dụng máy tính để bàn có thể được phân phối dễ dàng hơn bằng cách sử dụng Java & Bắt đầu Java Web?

Tôi biết rằng trong một số môi trường công ty, ví dụ: ngân hàng, chúng là những cách tương đối phổ biến để cung cấp các ứng dụng giao dịch phức tạp cho khách hàng, nhưng tại sao chúng không phổ biến trên toàn bộ web?

(Vì mục đích thảo luận, hãy giả sử một thế giới nơi: các nguồn tải xuống là "đáng tin cậy") Các ứng dụng được "ký" (tức là không có vấn đề bảo mật), tốc độ tải xuống nhanh (thời gian tải nhanh) và nhà phát triển biết Java (trong các số họ biết html/js/php)).

+4

Tôi thích ý tưởng rằng không có mối quan tâm về bảo mật với các ứng dụng đã ký. –

Trả lời

14

Tôi nghĩ lý do không phải là thời gian bảo mật cũng như thời gian khởi động của ứng dụng. Hãy hiểu những gì đằng sau hậu trường trước khi chúng ta tìm ra nguyên nhân gốc rễ.

Bảng điều khiển Java có cài đặt cho phép người dùng sử dụng cài đặt proxy của trình duyệt mặc định hoặc ghi đè chúng. Nói cách khác, các nhóm cơ sở hạ tầng có thể tùy chỉnh hình ảnh cài đặt Windows hoặc OS để cài đặt JVM với các thiết lập proxy doanh nghiệp. Vì vậy, tôi tin rằng đây không phải là vấn đề gì cả.

Java Web Start thực sự lưu trữ tất cả các ứng dụng có cài đặt tùy chỉnh trong Bảng điều khiển Java. Sau khi ứng dụng được lưu vào bộ nhớ cache, ứng dụng sẽ được "cài đặt" giống như các ứng dụng khác. Mặc dù lần thực hiện đầu tiên có thể chậm, lần thứ hai sẽ nhanh chóng do kỹ thuật phân bổ bộ nhớ thông minh của JVM. Vì vậy, thời gian khởi động có thể là một vấn đề nhưng rất nhiều trang web (ngay cả doanh nghiệp nội bộ) hiện đang được di chuyển đến cổng thông tin. Cổng thông tin web thường chứa rất nhiều thư viện không được sử dụng cho mục đích phát triển do thực tế chính cổng đó không dự đoán loại portlet nào được xây dựng và triển khai trên một trang cụ thể. Do đó, việc tải xuống một trang cổng thông tin có thể tiêu thụ tối đa MB và hoàn thành một trang trong hơn 5 giây; đây chỉ là một trang và bộ nhớ đệm giúp tối đa 30% nhưng vẫn còn rất nhiều thành phần HTML/Javascript/CSS cần tải xuống mỗi lần. Với điều này, tôi chắc chắn Java Web Start là một lợi thế ở đây.

Java Web Start không tải xuống lại nếu được lưu trữ miễn là bản sao máy chủ KHÔNG được nâng cấp. Do đó, nếu, ví dụ: một phần mềm quản lý dự án như MS Project, được hoàn thành bằng cách sử dụng SmartClient (tương tự như JWS), trao đổi thông tin giữa máy khách và máy chủ sẽ hoàn toàn là dữ liệu mà không cần trình bày như làm mới toàn bộ trang của trình duyệt. Ngay cả với sự trợ giúp của Ajax, nó cũng không loại bỏ hoàn toàn việc tải xuống toàn bộ trang. Bên cạnh đó, rất nhiều công ty coi Ajax là chưa trưởng thành và không có bảo đảm. Đó là lý do tại sao Ajax là một chủ đề nóng trong các vòng tròn của các nhà phát triển nhưng không phải trong phần mềm doanh nghiệp. Với ý nghĩ đó, các ứng dụng JWS chắc chắn có nhiều ưu điểm hơn như cách các ứng dụng JWS được triển khai và thực hiện trong các hộp cát, đã ký và có nhiều GUI tương tác hơn.

Các ưu điểm khác bao gồm phát triển nhanh hơn (dễ gỡ lỗi trong mã và hiệu suất), giao diện người dùng đáp ứng (không yêu cầu Máy chủ Comet cung cấp chức năng PUSH) và thực thi nhanh hơn (chắc chắn vì máy khách kết xuất GUI mà không dịch như HTML/Javascript/CSS và ít xử lý dữ liệu hơn).

Sau tất cả những điều này, tôi chưa chạm vào câu hỏi, tại sao JWS không nổi tiếng như vậy?

Ý kiến ​​của tôi là nó giống như nhận xét của Brian Knoblauch, nó không có nhận thức.

Những người IT bị thu hút bởi sự cường điệu của Web Technologies, Ajax PUSH, GWT và tất cả những từ đó đều khiến họ thiên về việc sử dụng các công nghệ khác nhau hoặc giải quyết những thách thức kỹ thuật thay vì những gì thực sự làm việc cho khách hàng.

Hãy xem Citrix. Tôi nghĩ Citrix thực sự là một ý tưởng tuyệt vời. Citrix cho phép bạn xây dựng các trang trại ứng dụng của riêng bạn đằng sau hiện trường. Có rất nhiều chiến lược nâng cấp và triển khai bạn có thể thực hiện mà không ảnh hưởng đến trải nghiệm của khách hàng. Triển khai Citrix cực kỳ dễ dàng, ổn định và an toàn. Các doanh nghiệp vẫn đang sử dụng nó. Tuy nhiên, tôi nghĩ JWS thậm chí còn tốt hơn cả Citrix. Ý tưởng của JWS là chạy các ứng dụng trên máy khách thay vì lưu trữ tấn trang trại máy chủ nơi máy khách có khả năng chạy các ứng dụng này. Điều này tiết kiệm một công ty rất nhiều tiền !!! Với JWS, nhóm phát triển vẫn có thể xây dựng logic nghiệp vụ và dữ liệu ở phía máy chủ. Tuy nhiên, nếu không có đơn vị xử lý web và để cho các máy khách thực hiện quá trình kết xuất, nó sẽ làm giảm đáng kể lượng tiêu thụ mạng và sức mạnh xử lý máy chủ.

Một ví dụ khác về lý do khiến JWS là một ý tưởng tuyệt vời là Blackberry MDS. Ứng dụng Blackberry thực sự là các ứng dụng Java được dịch từ Javascript. Với studio MDS của BB, bạn sử dụng công cụ GUI để xây dựng GUI ứng dụng BB, mã hóa GUI logic trong Javascript. Sau đó, các ứng dụng sau đó được dịch và triển khai trên máy chủ BES. Sau đó, máy chủ BES sẽ phân phối các ứng dụng này cho BB.Trên mỗi BB, nó chạy một ứng dụng Java mỏng với khả năng kết xuất GUI và khả năng kết nối mạng. Bất cứ khi nào ứng dụng yêu cầu dữ liệu, nó liên lạc với BES thông qua các dịch vụ web để tiêu thụ các dịch vụ từ các máy chủ khác. Đây không phải là phiên bản JWS BB phải không? Nó rất thành công.

Cuối cùng tôi nghĩ JWS không phổ biến vì Sun quảng cáo nó như thế nào. BB không bao giờ quảng cáo ứng dụng BB Java của họ tốt đến mức nào, họ tin rằng khách hàng thậm chí sẽ không quan tâm nó là gì. BB quảng cáo lợi ích của việc sử dụng MDS để phát triển ứng dụng: Nhanh chóng, Tiết kiệm chi phí, Trả lại doanh nghiệp.

Chỉ cần tôi, một chút dài, 2 cent ... :)

+0

Đây là một câu trả lời hoàn toàn lý thuyết. Chắc chắn, JWS trông tuyệt vời trên giấy, nhưng nó chỉ đơn giản là không sản xuất đã sẵn sàng. –

6

Vấn đề với Webstart là, bạn thực sự phải 'bắt đầu' thứ gì đó không hề nhanh ngay cả với kết nối nhanh, trong khi với ứng dụng web bạn nhập URL và ứng dụng ở đó.

Rất nhiều thứ có thể xảy ra với webstart. Có lẽ người dùng dự định không có các đặc quyền cần thiết, hoặc proxy của webstart được cấu hình sai, hoặc một cái gì đó đã đi sai với phụ thuộc jre hoặc chỉ đơn giản là không có java cài đặt ở nơi đầu tiên. Vì vậy, đối với các john doe trung bình trong internet nó không phải là ở tất cả các pleasent.

Trong các môi trường được kiểm soát như một công ty, đây là giải pháp tốt và dễ dàng trong nhiều trường hợp.

+0

Tôi hiểu ý của bạn về "bắt đầu", nhưng với điều đó, chúng tôi giả định rằng tốc độ tải xuống nhanh, điều này khác với cách nào "bắt đầu" một trang web bằng cách "nhấp vào" trên một liên kết? Đó là điều tương tự, chắc chắn, tức là một liên kết trên một trang. – Joel

+0

Trừ khi có bản nâng cấp, nó sẽ khởi động nhanh lần thứ hai do bộ nhớ đệm. –

+0

Tôi đã cố gắng làm rõ trong câu trả lời: ngay cả trên một webstart mạng cục bộ là chậm hơn đáng kể sau đó một ứng dụng web điển hình –

7

Tôi nghĩ chủ yếu là do thiếu nhận thức. Nó hoạt động rất tốt. Khá liền mạch. Ứng dụng chỉ tải xuống nếu đây là lần đầu tiên, đã có bản nâng cấp hoặc nếu người dùng cuối đã xóa bộ nhớ cache. Cách tuyệt vời để triển khai các ứng dụng máy tính để bàn toàn diện mà người dùng sẽ không phải lo lắng về việc nâng cấp theo cách thủ công!

+0

Tôi đồng ý và tôi nghĩ rằng nếu JNLP đã được tạo trước đó trong lịch sử Java, chúng tôi có thể sẽ thấy sự hiện diện Java mạnh mẽ hơn trên màn hình nền. – Thorn

+1

Vì câu trả lời này tôi đã gặp một vài vấn đề. Hệ thống bộ nhớ đệm của JNLP có lỗ hổng thiết kế quan trọng. Nếu 2 bản sao của cùng một ứng dụng JNLP được chạy và nguồn đã thay đổi giữa lần khởi chạy của 1 và 2, kết quả thực hiện của 1 là không thể đoán trước. Thay vì tải xuống một bản sao thứ hai và chạy nó, JNLP đổ phiên bản mới lên trên bản cũ và bắt đầu bản sao thứ hai. Điều này khủng khiếp phá vỡ bản sao đầu tiên. Lỗi tiếp theo. Các chứng chỉ tự ký hiện không được chấp nhận. Tốt cho việc sử dụng web, nhưng thực sự gây tổn hại cho các nhà phát triển doanh nghiệp. –

+0

Bạn có nghĩa là hai bản sao với các tên khác nhau hoặc hai bản sao chính xác cùng một cơ sở mã có cùng tên nhưng sử dụng các trình duyệt khác nhau không? Và vâng, không sử dụng các chứng chỉ tự ký, nhưng có một công việc xung quanh cho doanh nghiệp. Bạn có thể cài đặt chứng chỉ tự ký là đáng tin cậy và sau đó nó sẽ hoạt động giống như chứng chỉ được cấp bởi "cơ quan". – Thorn

11

Một rào cản lớn cho Java Webstart có thể là bạn vẫn cần phải cài đặt JVM trước khi nó thậm chí có thể tìm cách tải xuống và khởi động ứng dụng của bạn. Mọi người đều có trình duyệt. Không phải ai cũng có một JVM.

Edit: Tôi đã kể từ khi mua lại một số kinh nghiệm thực tiễn webstart và bây giờ có thể thêm hai điểm sau đây:

  • Các Deployment Toolkit script và JVM module phát hành ở đâu đó xung quanh Java 1.6u10 làm cho yêu cầu JVM ít vấn đề hơn vì nó có thể tự động tải xuống một JVM và lõi API và bắt đầu chương trình tải xuống phần còn lại.
  • Bắt đầu sử dụng Web nghiêm trọng. Ngay cả trong số các bản phát hành Java 1.6 cũng có bản phát hành đã tải xuống toàn bộ ứng dụng mọi lúc và một bản khác tải xuống ứng dụng và sau đó không thành công với thông báo lỗi tối nghĩa. Tất cả trong tất cả, tôi không thể thực sự khuyên bạn nên dựa vào một hệ thống mong manh như vậy.
+0

nhưng có lẽ là rào cản của việc cài đặt một jre có thể được thực hiện như không đau như là cài đặt flash hoặc bất kỳ plugin trình duyệt khác? – Joel

+0

JRE vẫn còn lớn hơn rất nhiều so với (Java6u10 đã giới thiệu các biện pháp để giảm bớt điều này), và nó không được cài đặt sẵn với Windows (mà tôi tin rằng Flash có). –

+0

Flash dứt khoát có quyền "khởi chạy ngay lập tức" ngay. –

1

Có một vấn đề rất lớn mà cụ thể là nó không cho phép "khởi động chương trình ngay lập tức và sau đó kiểm tra và tải về bất kỳ thông tin cập nhật trong nền "triển khai", đó là những gì mà hành vi của các ứng dụng defacto đang hội tụ.

Tôi coi cá nhân này là một vấn đề lớn đến nỗi chúng tôi đang tích cực tìm kiếm một công nghệ khác cung cấp công nghệ đó.

+0

Đó sẽ là một lựa chọn tốt để cung cấp cho người triển khai nó. Tôi sẽ không làm cho nó hoàn toàn là một quyết định của người dùng cuối. Nhà phát triển sẽ phải bật tùy chọn để cho phép sử dụng lựa chọn đó. Trong môi trường cụ thể của tôi, chúng tôi cần phải nâng cấp (không có sự lựa chọn của người dùng) vào lúc bắt đầu. –

+6

Java Web Start có khả năng này. Đặt '' ngay trước phần '' của bạn. – finnw

+0

Âm thanh như một số chức năng mới được giới thiệu với bản sửa đổi Java 6. Điều này cũng làm việc cho bình chính. –

3

Tôi đã làm việc trên một ứng dụng JWS triển khai trong một vài năm qua một cơ sở người dùng của một vài nghìn và nâng cấp tự động của nó thực sự là một nỗi đau lớn.

Trên mỗi cập nhật vì một số lý do, hàng chục người dùng bị "kẹt ở giữa". Tất cả những gì bạn nhận được là ngoại lệ "không tìm thấy lớp" (nếu bạn may mắn) hoặc không thể khởi chạy "không thể khởi chạy" từ JWS trước khi nó được đưa vào mã của bạn. Có vẻ như bản cập nhật đã được tải xuống một nửa. Hay nói cách khác, nó không tải xuống và áp dụng bản cập nhật nguyên tử và có bộ nhớ đệm kém để khởi chạy lại ứng dụng từ cùng một URL không khắc phục được bất kỳ thứ gì.

Không có cách nào để giải quyết nó ngoài xóa bộ nhớ cache JWS hoặc cung cấp một URL khác (ví dụ: nối thêm ?dummyparam=jwssucks ở cuối). Ngay cả khi tôi là một nhà phát triển đánh nó đôi khi và không nhìn thấy một cách xung quanh.

Khi nó hoạt động, nó hoạt động. Nhưng thường thì nó không, và sau đó nó là một nỗi đau lớn cho bạn và quầy trợ giúp của bạn. Tôi sẽ không khuyên bạn nên sử dụng nó cho doanh nghiệp hoặc nhiệm vụ quan trọng.

+0

Bạn đang sử dụng phiên bản Java nào? – Raleigh

+0

6 và cập nhật. Vẫn còn một mớ hỗn độn như bây giờ. –

+0

Chà, thật là đau. Tôi đã không thấy điều đó một cách may mắn. Tôi tự hỏi nếu thiết lập kiểm tra cập nhật để "nền" sẽ giúp đỡ. Bằng cách này, nó có thể tải xuống phiên bản mới nhất trong khi phiên bản hiện tại đang chạy. – Thorn

0

Từ các bài đăng này, có vẻ như khi sử dụng bắt đầu từ Web, điều quan trọng là phải quan tâm tốt đến máy chủ. Các "đau lớn" của tải ứng dụng trên mỗi khởi động có thể được gây ra bởi tem thời gian không chính xác được gửi từ máy chủ. Đây không phải là ứng dụng nhưng máy chủ phải được cấu hình để sử dụng bộ nhớ đệm đúng cách và không chỉ để tắt nó. Giới thiệu về buggy bắt đầu, tôi không chắc chắn lắm, nhưng có vẻ như với tôi rằng điều này cũng có thể là do kết nối không đáng tin cậy.

Ưu điểm quan trọng của khởi đầu Web là nó hoạt động tốt với OpenJDK trong Linux. Khách hàng của một số nhà phát triển hài lòng chỉ sử dụng Windows nhưng khách hàng của tôi thì không.

HTML và JavaScript, được đề cập trong câu hỏi ban đầu, là các phương pháp tiếp cận nhẹ hơn hoạt động tốt với các tác vụ nhỏ hơn như nút hoạt ảnh hoặc thậm chí là các bảng tương tác. Java niche dường như xung quanh các nhiệm vụ phức tạp hơn nhiều.

0

Java Web Start là loại kế thừa của Java Applet và các applet đã bị đốt cháy xung quanh thiên niên kỷ mới. Nhưng, tôi vẫn nghĩ rằng Java Applet là cách tốt hơn so với GWT hoặc địa ngục Javascript.

Java Web Start vs Embedded Java Applet

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