2009-08-05 67 views
6

Được rồi, tôi biết Java là ngôn ngữ nhưng ai đó đã hỏi tôi liệu họ có thể viết một ứng dụng web để giao tiếp với ứng dụng web tôi đã viết trong ASP.NET hay không. Tôi đang triển khai một dịch vụ web để phục vụ một XML nên nó khá bất khả tri về ngôn ngữ.Chạy Java dưới dạng ứng dụng web

Tuy nhiên, tôi không chắc chắn 100% việc đi xuống tuyến đường Java có tạo ra nhiều ý nghĩa hay không. Tôi đã được mong đợi mã PHP phía máy chủ hoặc ASP.NET với một số Ajax/JavaScript hoặc có thể là một chương trình JavaScript khách hàng nặng hơn bằng cách sử dụng JScript.

Ai đó có thể giải thích môi trường Java cơ bản khi đi kèm với ứng dụng web? Tôi đã phỏng đoán những điều sau đây - tôi có đang sủa cây đúng không?

  • Java khi chạy như ASP.NET được gọi là JSP
  • JavaBeans là một chút như .NET framework, tức là nó là một thư viện các thành phần tái sử dụng
  • Java EE là một chút như ASP.NET ở chỗ nó là một khuôn khổ cho việc xây dựng các trang web trên một máy chủ
  • Java cũng có thể chạy trên máy khách nhưng nó cần máy ảo Java cài đặt

Khi chạy Java trên máy khách, bạn có thể sử dụng JavaBeans và có một khuôn khổ? Nó cũng có thể sử dụng JScript không? Tôi không nghĩ như vậy là JScript là thư viện JavaScript.

Trong khi chạy Java trên máy chủ sẽ không sao, đây là một ứng dụng tương đối nhỏ và do đó, Java nghe có vẻ hơi quá mức. PHP hoặc ASP.NET cảm thấy phù hợp hơn.

Nhưng tôi không nghĩ rằng họ nên đi xuống Java applet trong trình duyệt và nó cho biết thêm sự phức tạp đó là không cần thiết.

Trả lời

11

Hãy thử để xác định một số thuật ngữ (không nhất thiết là 100% chính xác, nhưng có thể hiểu)

  • Java: có thể có rất nhiều điều: Ngôn ngữ, JVM, nền tảng, ý tưởng, ...
  • Java SE: Java Standard Edition: Java "bình thường" vì nó được sử dụng để chạy các ứng dụng dành cho máy tính để bàn. Điều này trước đây được gọi là "Java 2 SE" và "J2SE".
  • Java EE: Java Enterprise Edition. Ngăn xếp cấp doanh nghiệp để phát triển các ứng dụng web và các con thú phức tạp hơn (chứa rất nhiều thành phần). Điều này trước đây được gọi là "Java 2 EE" và "J2EE".
  • JSP: Trang máy chủ Java. Một ngôn ngữ cho phép trộn nội dung HTML/XML với Java Scriptlets. Khá nhiều tương đương với ASP.NET.
  • Đậu Java (lưu ý: không phải "JavaBeans"): một đặc điểm kỹ thuật khá nhẹ chỉ mô tả cách các lớp được viết sao cho các thuộc tính và phương pháp của chúng có thể được tự động phát hiện. Không được nhầm lẫn với Enterprise Java Beans (EJB)
  • Enterprise Java Beans/EJB: Anh em lớn hơn nhiều, phức tạp hơn nhiều của Java Beans. Cho phép bạn đóng gói một số phần của ứng dụng của bạn. Rất phức tạp và cồng kềnh để sử dụng (có một chút tốt hơn trong các phiên bản gần đây, nhưng thay đổi đó dường như đã đến muộn).

JScript là phương ngữ JavaScript của Microsoft và không có gì liên quan đến Java.

Nhân tiện, JavaScript cũng không liên quan gì đến Java. Điểm tương đồng duy nhất là 4 ký tự đầu tiên của tên của chúng và một sự tương đồng bề ngoài về cú pháp.Vì vậy, về cơ bản: nếu họ muốn viết một ứng dụng Java để giao tiếp với ứng dụng của bạn chỉ đơn giản là cung cấp một số XML, thì Java chắc chắn là phù hợp cho điều này. Bạn không cần bất kỳ công nghệ Java EE nào cho điều này. Java SE là quá đủ cho việc này.

Chỉnh sửa: Lưu ý rằng thực tế khá phổ biến là không sử dụng toàn bộ ngăn xếp Java EE cho các ứng dụng web (nhỏ). Cụ thể là Apache Tomcat, được sử dụng rộng rãi, không phải là Máy chủ Java EE đầy đủ (theo yêu cầu của đặc tả Java EE), mà là việc triển khai các tiêu chuẩn JSP và Servlet (hai phần cốt lõi của Java EE). Nó vẫn chạy nhiều, nhiều ứng dụng web Java hữu ích tốt, bởi vì chúng đơn giản là không sử dụng các tính năng phức tạp hơn của Java EE.

+0

Cảm ơn bạn đã làm rõ –

+0

Ngoài ra, JavaScript chạy trong trình duyệt, trong khi Java Scriptlets chạy trên máy chủ (vì chúng là một phần của Trang máy chủ Java). – Liam

0

Nghe có vẻ như bạn đã xử lý tốt mọi thứ.

Bạn có quyền ngần ngại khi sử dụng J2EE cho một ứng dụng web nhỏ. Tôi tìm thấy điều này. NET/J2EE feature comparison hữu ích. Lưu ý đặc biệt là so sánh các chi phí và độ phức tạp của biểu đồ thứ hai trong một dự án thử nghiệm do Microsoft và Sun phát triển.

Java cung cấp sức mạnh to lớn, nhưng phù hợp hơn cho các ứng dụng web lớn. Tôi sẽ có xu hướng đồng ý với sở thích của bạn cho ASP/.NET trong trường hợp này.

+2

Hãy cảnh giác với điểm chuẩn đó (hoặc thực sự). Kết quả có phần gây tranh cãi. Thế giới java thực sự đang nhận được các khung IOC đơn giản hơn, JPA ... JEE bây giờ ít nặng hơn nhiều. Bất kỳ điều gì thực sự khó có được sự thật giống như so sánh trong nỗ lực phát triển. Tôi thậm chí không chắc chắn hiệu suất của riêng tôi thay đổi từng ngày như thế nào. Có khả năng ứng dụng web Java rất nhẹ và miễn phí. Nó thực sự khá khả thi để làm các ứng dụng web nhanh chóng (và bẩn?) Trong Java - bạn không phải sử dụng tất cả các tính năng cao cấp tinh vi. – djna

+0

Xin lỗi - liên kết "Tính năng .NET/J2EE" được liên kết đã được hiển thị là sai lệch/thiếu sót khủng khiếp nhiều lần - http://onjava.com/pub/a/onjava/2001/11/28/catfight.html hoặc chỉ google một cái gì đó như "JPetstore. NET so sánh" để tìm một tấn. Thêm vào đó, không có lý do gì bạn bị ràng buộc với một giải pháp "J2EE thuần túy" trong Java - những gì về Spring MVC/Hibernate? Grails? – Nate

+0

Tôi đồng ý rằng Spring là một lựa chọn tuyệt vời, nhưng câu hỏi vẫn tiếp tục tham chiếu đến J2EE, vì vậy tôi cho rằng đó là tùy chọn Java mà họ đang cân nhắc. –

1

Điều đó có vẻ là tổng quan khá tốt về cảnh quan.

Tôi đồng ý với đánh giá của bạn về phương pháp tiếp cận applet, tốt nếu bạn cần xử lý thực sự phức tạp tại khách hàng. Nếu không HTML được tăng cường với JavaScript là tốt, một số công việc để làm cho nó di động trên các trình duyệt mặc dù.

Các khía cạnh bên máy chủ là moe intersting. Nếu người dùng Dịch vụ Web của bạn đã thông thạo Java và có lẽ đã có cơ sở hạ tầng Ứng dụng Web tại chỗ thì không có lý do gì để quan tâm đến việc sử dụng Java.

Vì vậy, nếu họ đang viết, hãy để họ làm điều đó.

Mặt khác, bạn Trình lập trình .Net đang được yêu cầu nâng cao kỹ năng Java. Tôi nghĩ điều đó không rõ ràng (và tôi là Java với lõi xanh) Nếu tôi muốn có cách tiếp cận nhanh chóng và dễ dàng một trang web trong một tình huống lĩnh vực màu xanh lá cây tôi muốn sử dụng một cái gì đó như php hoặc Smash

Lợi thế của Java theo nghĩa JE hoặc, tôi cho rằng, một cách tiếp cận đầy đủ .Net là bạn có thể mở rộng, có thể điều khiển được, giải pháp quản lý (là một từ?). Chỉ vì chức năng là nhỏ và dễ dàng không giả sử nó sẽ không được sử dụng nhiều.

+0

Tôi không được yêu cầu nâng cấp Java như vậy nhưng tôi sẽ được xem là chủ sở hữu của giao diện XML, bất kỳ vấn đề nào họ sử dụng có thể được phân loại (không công bằng nhưng heck, cuộc sống không công bằng) vấn đề. Họ chắc chắn muốn "Tư vấn về cách thực hiện nó" ... –

4

Java khi chạy như ASP.NET được gọi là JSP

Đây là loại sự thật - một trang JSP truyền thống là rất giống một trang ASP cổ điển. Không có "codebehind" như bạn có với ASPX.

Sự khác biệt lớn trong Java là khung công tác web dựa trên những thứ được gọi là servlet. Một servlet là một chút giống như một ASP.NET "axd" ở chỗ nó xử lý các yêu cầu HTTP thô (get, post, etc) và spits ra một phản ứng.

Trên đầu trang của servlet "cơ sở" đó là nhiều khung công tác khác - JSP là một trong số chúng (JSP được biên dịch cuối cùng bởi máy chủ vào các servelets). JSF, Struts, Tapestry và nhiều thứ khác cũng được xây dựng trên cơ sở này. Trong thế giới .NET bạn thực sự có hai lựa chọn - ASP.NET (.aspx trang với codebehind) hoặc .NET MVC. Hầu hết các khuôn khổ web Java đều giống như NET MVC, mặc dù (như tôi hiểu nó) JSF là giống như ASP.NET

JavaBeans là một chút như .NET framework , tức là nó là một thư viện các các thành phần có thể sử dụng lại được

Không thực sự. Những gì bạn đang nghĩ đến là J2SE, là khung cơ bản mà tất cả các ứng dụng Java được xây dựng - có các lớp thu, ổ cắm, bảo mật, v.v. JavaBeans chỉ là một đặc điểm kỹ thuật cho cách viết các đối tượng kiểu DTO (đặt tên tiêu chuẩn cho getter và setter vv)

Java EE là một chút như ASP.NET trong rằng đó là một khuôn khổ cho việc xây dựng web trang trên một máy chủ

Đây là nhiều hay ít đúng . J2EE là một phần mở rộng của J2SE để thực hiện phát triển web (cũng như của EJB là một quả bóng sáp hoàn toàn không thực sự có tính tương đương trực tiếp trong .NET).

Java cũng có thể chạy trên máy khách nhưng nó cần máy ảo Java cài đặt

Có, điều này là đúng. Cũng giống như bạn có thể sử dụng .NET để phát triển các ứng dụng web hoặc máy tính để bàn, bạn có thể sử dụng Java theo cùng một cách. Và trong cả hai trường hợp, yêu cầu thời gian chạy (cho dù đó là máy ảo Java hoặc khung công tác .NET)

Đối với đánh giá của bạn về việc sử dụng Java so với PHP so với .NET, tôi đã làm việc với tất cả chúng và Tôi sẽ nói Java là phức tạp nhất, nhưng cũng rất mạnh mẽ cho các ứng dụng quy mô rất lớn. PHP sẽ là dễ nhất cho đến nay, và rất tuyệt vời cho các ứng dụng nhỏ, nhưng có thể lộn xộn khi mọi thứ trở nên lớn hơn. ASP.NET có một sự cân bằng khá tốt. Khá phức tạp hơn một chút so với PHP, nhưng cũng mạnh mẽ hơn nhiều.

+0

Cảm ơn đoạn cuối. Đây là một front-end thay thế của www.whatpub.org vì vậy không phải là nhiệm vụ quan trọng hoặc có khả năng được sử dụng nhiều. Khi tôi là ASP.NET, thì đó là tuyến đường tự nhiên nhưng nếu họ muốn sử dụng PHP, thì tốt thôi thì đừng nghĩ rằng có rất nhiều lỗi tìm thấy từ tôi. –

0

Nó không hoàn toàn rõ ràng với tôi nếu bạn đang viết webservice hoặc nó đã được viết và ai đó chỉ muốn sử dụng nó?

Nếu họ chỉ muốn gọi dịch vụ web của bạn là ngôn ngữ thuyết bất khả tri nên không cần biết ngôn ngữ/thư viện họ sử dụng là gì.

Nếu bạn đang viết các dịch vụ web, một lần nữa, nó thực sự không quan trọng ngôn ngữ mà bạn sử dụng, chỉ cần chọn một trong những bạn cảm thấy thoải mái và có một thư viện tốt đẹp.

Nếu bạn quyết định sử dụng Java tôi có kinh nghiệm với Axis2 và nó yên tĩnh đơn giản một khi bạn nhận được đầu xung quanh những gì nó đang làm. Bạn có thể viết POJO (đối tượng Java cũ thuần túy) và cho Axis biết đó là những gì bạn muốn trưng ra. Tải nó lên Tomcat hoặc một cái gì đó tương tự và bạn tốt để đi.

+0

Tôi sẽ viết dịch vụ web - tại thời điểm này, chúng tôi chỉ xác định cấu trúc trao đổi dữ liệu XML. Mặc dù ngôn ngữ không thuyết phục, tôi nghi ngờ tôi sẽ được gửi các đoạn mã khi nó không hoạt động –

0

Câu trả lời ngắn - cho câu hỏi bạn không hỏi :) - là: Java sẽ hoạt động tốt. Nếu Java là những gì khách hàng/đối tác của bạn/bất cứ điều gì là thoải mái nhất sử dụng, hãy để họ * sử dụng nó.

Cụ thể:

  • Nếu bạn đã viết một dịch vụ web SOAP bình thường với WSDL, một ứng dụng Java không nên có bất kỳ rắc rối nói chuyện với nó. Tôi đã viết các máy khách Java nói chuyện với các dịch vụ web .NET và.NET khách hàng mà nói chuyện với các dịch vụ web Java và trong khi luôn luôn có một chút không quan tâm tham gia, không có rắc rối nghiêm trọng trừ khi các dịch vụ được gửi nhúng các đối tượng nhị phân xung quanh hoặc cái gì khác không chuẩn như thế.

  • Nếu bạn vừa mới viết một cái gì đó phục vụ XML thô qua HTTP, Java sẽ không gặp bất kỳ sự cố nào khác với .NET.

Java không nhất thiết phải nặng hơn PHP hoặc ASP.NET, nếu bạn sử dụng máy chủ nhẹ như Jetty. Không có ứng dụng trình duyệt nào cần được tham gia. Và Java có các thư viện vững chắc, ổn định để nói chuyện với các dịch vụ web. (PHP cũng vậy, nhưng tôi sẽ ngạc nhiên nếu những người Java không được tập luyện nhiều hơn.)

Nếu bạn có câu hỏi khác, bạn có thể xem bài viết ".NET framework: .NET vs. Java and J2EE" trên Wikipedia.


* Nếu họ muốn bạn viết cuối của họ về dịch vụ web, đó là toàn bộ một trò chơi bóng khác nhau. Có thể họ có một số cơ sở hạ tầng Java hiện có mà họ thực sự cần sử dụng lại - trong trường hợp đó tôi đề nghị chọn một cuốn sách cơ bản tốt như O'Reilly's Head First Servlets and JSP - nhưng nếu không, nếu .NET là chuyên môn của bạn, đó là những gì họ nên cho phép bạn sử dụng. Nếu họ không thích Microsoft, hãy nói với họ rằng bạn sẽ làm cho nó chạy dưới Mono.

+0

Cơ hội tìm kiếm một dịch vụ lưu trữ giá rẻ cho Java là gì? PHP & ASP.NET ở khắp mọi nơi. Không chắc lắm về Java. –

0

Thực sự có phải là Java không? Có lẽ bạn có thể viết một ứng dụng web nhỏ bằng cách sử dụng JRuby hoặc Groovy tiêu thụ dịch vụ web ASP.NET của bạn. Có các công cụ (.ie. Apache CFX) trong JRuby, Groovy và java cũ đơn giản cho phép bạn tiêu thụ WSDL của bạn để tạo ra các ứng dụng khách một cách nhanh chóng.

Có nói rằng, thật khó để đưa ra một đề xuất tốt mà không biết chính xác cách thức ứng dụng khách Java này có nghĩa là được sử dụng. Nó sẽ giao tiếp với người dùng thực tế hay nó giống như một công việc hàng loạt?

Nếu sau này, bạn có thể loại bỏ nhanh chóng bằng Java hoặc JRuby/Groovy. Vì các công nghệ sau này có thể được biên dịch thành các lọ, chúng có thể chạy trên JVM.

Nếu nó sắp đối mặt với người dùng, thì bạn phải tạo ứng dụng khách web hoặc ứng dụng khách dày.

Trước đây, bạn có thể đi tuyến đường JRuby/Groovy và tạo một ứng dụng web nhỏ, mà bạn có thể triển khai trên máy chủ ứng dụng Jetty/GlassFish/Tomcat đã bị loại bỏ. Hoặc bạn có thể đi theo cách Java và sử dụng một trong nhiều khung công tác.

Độc lập với lựa chọn ngôn ngữ JVM, việc tạo ứng dụng web dễ dàng hơn nhiều so với ứng dụng khách dày. Tạo một máy khách GUI không tầm thường với Java với thiết kế giao diện người dùng tốt là không có nhiệm vụ tầm thường. Tôi đã làm việc với cả web và khách hàng dày, và đó là trải nghiệm của tôi (YMMV).

Tôi sẽ không quá lo lắng khi nghĩ đến chi phí sử dụng vùng chứa web. Bạn có thể chạy một ứng dụng web gọn gàng và trung bình trong một thùng chứa trong khoảng 500mg (mà phải là một giọt nước trong một máy chủ.)

Và nếu bạn thực sự gắn bó với servlet đơn giản và không có JSP (có nghĩa là, servlet tạo đầu ra HTML), bạn có thể sử dụng một thùng chứa servlet thực sự có nghĩa là và nhỏ gọn và nhỏ gọn như TJWS, LWS hoặc Winstone có thể chạy với ít hơn 1MB.

Hy vọng điều đó sẽ hữu ích.

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