将Java作为Web应用程序运行

时间:2009-08-05 12:18:06

标签: java jsp java-ee javabeans

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

然而,我并不是百分之百地确定沿着Java路线走下去是否有道理。我有点期待PHP或ASP.NET服务器端代码可能使用一些Ajax / JavaScript或者使用JScript的更重的客户端JavaScript程序。

有人可以在使用webapps时解释基本的Java环境吗?我推断了以下内容 - 我是不是正确地吠了?

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

在客户端上运行Java时,您是否可以使用JavaBeans并且是否存在框架?它还可以使用JScript吗?我不这么认为JScript是JavaScript库。

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

但我不认为他们应该在浏览器中使用Java applet,这会增加不需要的复杂性。

7 个答案:

答案 0 :(得分:11)

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

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

JScript是Microsoft的JavaScript方言,与Java没有任何关系。

顺便说一下,JavaScript也与Java没有任何关系。唯一的相似之处是他们名字的前4个字符和语法上的肤浅相似性。

基本上如此:如果他们想编写一个Java应用程序来与只提供一些XML的应用程序接口,那么Java绝对适合这一点。您不需要任何Java EE技术。 Java SE绰绰有余。

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

答案 1 :(得分:4)

  

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

这是真的 - 传统的JSP页面很像传统的ASP页面。像ASPX一样没有“代码隐藏”。

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

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

  

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

不是真的。您正在考虑的是J2SE,它是构建所有Java应用程序的基本框架 - 具有集合类,套接字,安全性等.JavaBeans只是如何编写DTO类型对象的规范(标准命名为getter and setters等。)

  

Java EE有点像ASP.NET   它是构建Web的框架   服务器上的页面

这或多或少是正确的。 J2EE是用于进行Web开发的J2SE的扩展(以及EJB,它是一个完整的蜡球,在.NET中没有真正的直接等效)

  

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

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

至于你对使用Java与PHP和.NET的评估,我已经使用过它们,我会说Java是最复杂的,但对于超大规模的应用程序也非常强大。到目前为止,PHP将是最简单的,并且适用于小型应用程序,但是当事情变得更大时会变得混乱。 ASP.NET有很好的平衡。比PHP更复杂,但也更强大。

答案 2 :(得分:1)

这似乎是一个非常好的景观概述。

我同意您对applet方法的评估,如果您需要在客户端进行非常复杂的处理,那就很好。否则,用JavaScript扩充的HTML就可以了,但有些工作可以让它在浏览器之间移植。

服务器端方面正在进行中。如果使用Web服务的人已经熟悉Java并且可能已经安装了Web App基础结构,则没有理由担心Java的使用。

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

另一方面一个.Net程序员被要求掌握Java技能我认为这是不明显的(我是我的蓝色核心的Java)如果我想快速和在绿色领域做一个网站的简单方法我会使用像php或Smash

这样的东西

Java在JE意义上的优势,或者我认为,一个成熟的.Net方法是你获得了一个可扩展的,可管理的,可管理的(这是一个词?)解决方案。仅仅因为功能很小而且容易,不要认为它不会被大量使用。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

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

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

如果您正在编写Web服务,那么使用哪种语言并不重要,只需选择一个您熟悉的语言并拥有一个很好的库。

如果你决定使用Java我有Axis2的经验,一旦你了解它正在做的事情,它就很安静了。您可以编写POJO(Plain Old Java Object)并告诉Axis您想要公开的内容。将它加载到Tomcat或类似的东西上,你就可以了。

答案 5 :(得分:0)

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

具体做法是:

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

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

如果使用像Jetty这样的轻量级服务器,Java不一定比PHP或ASP.NET更重要。不需要涉及浏览器小程序。 Java拥有可靠,稳定的库,可与Web服务进行通信。 (PHP确实如此,但如果Java的运行时间没那么大,我会感到惊讶。)

对于您的其他问题,您可能希望查看维基百科文章“.NET framework: .NET vs. Java and J2EE。”


*如果他们想要来写他们的网络服务结束,这是一个完全不同的球类游戏。可能他们有一些现有的Java基础设施,他们确实需要重复使用 - 在这种情况下我建议选择像O'Reilly的Head First Servlets and JSP这样的好基础书 - 但是否则,如果.NET是你的专长,这就是他们应该让你使用的东西。如果他们不喜欢微软,请告诉他们你将在Mono下运行。

答案 6 :(得分:0)

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

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

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

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

对于前者,您可以使用JRuby / Groovy路由并创建一个小型Web应用程序,您可以在已剥离的Jetty / GlassFish / Tomcat应用服务器上进行部署。或者你可以采用Java方式并使用众多框架之一。

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

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

如果您真的坚持使用普通的servlet而没有JSP(也就是说,servlet会创建HTML输出),那么您可以使用真正意义上的精简小型servlet容器,如TJWSLWSWinstone,运行时间少于1MB。

希望它有所帮助。