6

好的,我知道 Java 是一种语言,但有人问我是否可以编写一个 Web 应用程序来与我用 ASP.NET 编写的 Web 应用程序进行交互。我正在实现一个 Web 服务来提供 XML,所以它与语言无关。

但是,我不能 100% 确定走 Java 路线是否有意义。我有点期待 PHP 或 ASP.NET 服务器端代码可能带有一些 Ajax/JavaScript,或者可能是使用 JScript 的较重的客户端 JavaScript 程序。

有人可以解释一下 webapps 附带的基本 Java 环境吗?我已经推断出以下内容 - 我在吠叫正确的树吗?

  • 像 ASP.NET 一样运行的 Java 称为 JSP
  • JavaBeans 有点像 .NET 框架,即它是一个可重用组件库
  • Java EE 有点像 ASP.NET,因为它是在服务器上构建网页的框架
  • Java 也可以在客户端上运行,但需要安装 Java VM

在客户端运行Java时,可以使用JavaBeans吗?有框架吗?它也可以使用 JScript 吗?我不这么认为,因为 JScript 是 JavaScript 库。

虽然在服务器上运行 Java 是可以的,但这是一个相对较小的应用程序,因此 Java 听起来有点矫枉过正。PHP 或 ASP.NET 感觉更合适。

但我认为他们不应该在浏览器中使用 Java 小程序,它会增加不必要的复杂性。

4

7 回答 7

11

让我们尝试定义一些术语(不一定 100% 准确,但可以理解)

  • Java:可以是很多东西:语言、JVM、平台、想法……
  • Java SE:Java 标准版:“普通”Java,因为它用于运行桌面应用程序。这以前被称为“Java 2 SE”和“J2SE”。
  • Java EE:Java 企业版。用于开发 Web 应用程序和其他更复杂的野兽(包含大量组件)的企业级堆栈。这以前被称为“Java 2 EE”和“J2EE”。
  • JSP:Java 服务器页面。一种允许将 HTML/XML 内容与 Java Scriptlet 混合的语言。几乎等同于 ASP.NET。
  • Java Beans(注意:不是“JavaBeans”):一个相当轻量级的规范,它只描述了应该如何编写类,以便可以自动发现它们的属性和方法。不要与 Enterprise Java Beans (EJB) 混淆
  • Enterprise Java Beans / EJB:Java Beans 的更复杂的大兄弟。允许您封装应用程序的某些部分。使用起来非常复杂和麻烦(在最近的版本中变得更好了,但这种变化似乎来得太晚了)。

JScript 是 JavaScript 的 Microsoft 方言,与 Java 毫无关系。

顺便说一句,JavaScript 也与 Java 没有任何关系。唯一的相似之处是它们名称的前 4 个字符和语法上的表面相似性。

所以基本上:如果他们想编写一个 Java 应用程序来与您的应用程序交互,只提供一些 XML,那么 Java 绝对适合这个。为此,您不需要任何 Java EE 技术。Java SE 已经足够了。

编辑:请注意,不将整个 Java EE 堆栈用于(小型)Web 应用程序是一种相当普遍的做法。具体来说,广泛使用的Apache Tomcat不是一个完整的 Java EE 服务器(如 Java EE 规范所要求的那样),而是 JSP 和 Servlet 标准(Java EE 的两个核心部分)的实现。它仍然可以很好地运行许多有用的 Java Web 应用程序,因为它们根本不使用 Java EE 的更复杂的特性。

于 2009-08-05T12:27:35.980 回答
4

像 ASP.NET 一样运行的 Java 称为 JSP

这是真的——传统的 JSP 页面很像经典的 ASP 页面。没有像 ASPX 那样的“代码隐藏”。

Java 的最大区别在于 Web 框架基于称为 servlet 的东西。servlet 有点像 ASP.NET “axd”,它处理原始 HTTP 请求(get、post 等)并发出响应。

在该 servlet“基础”之上还有许多其他框架——JSP 就是其中之一(JSP 最终由服务器编译成servelet)。JSF、Struts、Tapestry 和许多其他的也建立在这个基础上。在 .NET 世界中,您确实有两种选择 - ASP.NET(带有代码隐藏的 .aspx 页面)或 .NET MVC。大多数 Java Web 框架更像 .NET MVC,尽管(据我了解)JSF 更像 ASP.NET

JavaBeans 有点像 .NET 框架,即它是一个可重用组件库

并不真地。你想到的是 J2SE,它是构建所有 Java 应用程序的基本框架 - 具有集合类、套接字、安全性等。JavaBeans 只是关于如何编写 DTO 类型对象的规范(标准命名为getter 和 setter 等)

Java EE 有点像 ASP.NET,因为它是在服务器上构建网页的框架

这或多或少是正确的。J2EE 是 J2SE 的扩展,用于进行 Web 开发(以及 EJB,它们是完全不同的蜡球,在 .NET 中并没有直接的等价物)

Java 也可以在客户端上运行,但需要安装 Java VM

是的,这是真的。就像您可以使用 .NET 开发桌面或 Web 应用程序一样,您也可以以同样的方式使用 Java。在这两种情况下,都需要运行时(无论是 Java VM 还是 .NET 框架)

至于您对使用 Java、PHP 和 .NET 的评估,我使用过所有这些,我会说 Java 是最复杂的,但对于非常大规模的应用程序也非常强大。PHP 将是迄今为止最简单的,并且非常适合小型应用程序,但当事情变得更大时会变得混乱。ASP.NET 有一个很好的平衡。比 PHP 复杂得多,但功能也强大得多。

于 2009-08-05T12:37:20.400 回答
1

这似乎是对景观的一个很好的概述。

我同意您对小程序方法的评估,如果您需要在客户端进行非常复杂的处理,那就太好了。否则,用 JavaScript 增强的 HTML 就可以了,不过有些工作可以使它跨浏览器移植。

服务器端方面很有趣。如果使用您的 Web 服务的人已经精通 Java,并且可能已经拥有 Web 应用程序基础设施,则没有理由担心 Java 的使用。

因此,如果他们正在编写它,就让他们去做。

另一方面,您的 .Net 程序员被要求提高 Java 技能,我认为这并不明显(而且我的蓝色核心是 Java)如果我想要一种快速简便的方法来制作绿色网站现场情况我会使用 php 或Smash 之类的东西

Java 在 JE 意义上的优势,或者我认为成熟的 .Net 方法的优势在于,您可以获得可扩展、可集群、可管理(这是一个词吗?)的解决方案。不要因为这个功能小而简单就认为它不会被大量使用。

于 2009-08-05T12:32:08.853 回答
0

听起来你已经很好地处理了一些事情。

您对将 J2EE 用于小型 Web 应用程序犹豫不决是正确的。我发现这个 .NET/J2EE特性比较很有帮助。请特别注意第二张图表对 Microsoft 和 Sun 开发的测试项目的成本和复杂性的比较。

Java 提供了强大的功能,但更适合大型 Web 应用程序。在这种情况下,我倾向于同意您对 ASP/.NET 的偏好。

于 2009-08-05T12:28:16.433 回答
0

如果您正在编写网络服务或者它已经编写并且有人只想使用它,我并不完全清楚?

如果他们只是想调用您的网络服务,那么它与语言无关,因此他们使用什么语言/库并不重要。

同样,如果您正在编写 Web 服务,那么您使用哪种语言实际上并不重要,只需选择一种您熟悉并拥有一个不错的库的语言即可。

如果您决定使用 Java,我有使用Axis2的经验,一旦您了解它在做什么,它就会变得非常简单。您可以编写一个 POJO(普通旧 Java 对象)并告诉 Axis 您想要公开的内容。将它加载到 Tomcat 或类似的东西上,你就可以开始了。

于 2009-08-05T12:54:23.720 回答
0

简短的回答——对于你没有问的问题:)——是:Java 应该可以正常工作。如果 Java 是您的客户/合作伙伴/最喜欢使用的东西,让他们*使用它。

具体来说:

  • 如果您使用 WSDL 编写了一个普通的 SOAP Web 服务,那么 Java 应用程序与它通信应该不会有任何问题。我编写了与 .NET Web 服务通信的 Java 客户端和与 Java Web 服务通信的 .NET 客户端,虽然总是涉及一些小问题,但除非服务正在发送嵌入式二进制对象或其他东西,否则不会有严重的麻烦像这样的非标准。

  • 如果您刚刚编写了通过 HTTP 提供原始 XML 的东西,那么 Java 在这方面应该不会比 .NET 有更多的麻烦。

如果您使用像Jetty这样的轻量级服务器,Java 不一定比 PHP 或 ASP.NET 更重量级。不需要涉及浏览器小程序。Java 具有用于与 Web 服务通信的可靠、稳定的库。(PHP 也是如此,但如果 Java 没有得到更多的锻炼,我会感到惊讶。)

对于您的其他问题,您可能想查看 Wikipedia 文章“ .NET 框架:.NET 与 Java 和 J2EE ”。


* 如果他们希望编写他们的 Web 服务端,那就完全不同了。可能他们有一些现有的 Java 基础设施,他们确实非常需要重用——在这种情况下,我建议选择一本好的基础书籍,比如 O'Reilly 的Head First Servlets 和 JSP—— 但除此之外,如果 .NET 是你的专长,这就是他们应该让你使用的东西。如果他们不喜欢微软,告诉他们你会让它在Mono下运行。

于 2009-08-05T13:50:14.247 回答
0

它真的必须是Java吗?也许您可以使用 JRuby 或 Groovy 编写一个使用 ASP.NET Web 服务的小型 Web 应用程序。JRuby、Groovy 和普通的 Java 中有一些工具(即 Apache CFX),可以让您使用 WSDL 来动态创建客户端。

话虽如此,如果不确切了解这个 Java 客户端的用途,很难给出一个好的建议。它是要与实际用户交互,还是像批处理作业?

如果是后者,您可以使用 Java 或 JRuby/Groovy 快速解决这个问题。由于后面的技术可以编译成jar,所以可以在JVM上运行。

如果要面向用户,则必须创建 Web 客户端或胖客户端。

对于前者,您可以走 JRuby/Groovy 路线并创建一个小型 Web 应用程序,您可以将其部署在精简的 Jetty/GlassFish/Tomcat 应用程序服务器上。或者您可以采用 Java 方式并使用众多框架之一。

独立于 JVM 语言选择,创建 Web 应用程序比创建胖客户端要简单得多。不幸的是,使用具有良好 UI 设计的 Java 创建一个非平凡的 GUI 客户端并非易事。我曾与 web 和胖客户端一起工作,这就是我的经验 (YMMV)。

在考虑使用 Web 容器的开销时,我不会太担心。您可以在大约 500 毫克的容器中运行精简的 Web 应用程序(这对于服务器来说应该是水中的一滴水。)

如果你真的坚持使用普通的 servlet 并且没有 JSP(即 servlet 创建 HTML 输出),你可以使用一个非常简单、精简和微型的 servlet 容器,如TJWSLWSWinstone,它们可以运行不到 1MB。

希望能帮助到你。

于 2010-04-03T22:12:03.180 回答