什么时候Java是Web开发的好选择?[关闭]


35

什么时候Java是Web开发的好选择?

请不要说“当您拥有仅了解Java的开发团队时”。


5
可以这样问,哪个功能使Java成为我的Web开发语言?
Abimaran Kugathasan 2011年

1
使用Java的一个小缺点是市场上缺乏事实上的主导框架。到目前为止,还没有基于Java的框架真正崛起(像Struts以前那样)。就我个人而言,如果我正在使用Spring应用程序或Grails处理其他任何事情,那么我会倾向于Spring MVC(因为您可以随时调用Java)。
Martijn Verburg

突然从这个问题中得到25分!
Gulshan

我们是否考虑现有的开源软件?
jonathan 2012年

2
“就像Struts过去一样”:今天使用struts有什么问题(除了不再流行)?
乔治

Answers:


35

鉴于有许多可用的框架,平台的成熟度等,我很想说“几乎总是”。因此,有一些您不应该使用Java的原因:

  • 作为纯MS商店,您可能更喜欢以.net方式进行操作
  • 如果您需要最便宜的虚拟主机,则可能只选择PHP
  • 如果您想尽快完成,Ruby on Rails,Grails或Django可能更适合您的需求
  • 如果您的开发团队只知道XYZ,其中XYZ!= Java,则最好使用XYZ

7
因此,如果我们不是MS商店,我们会使用Java,有意花钱托管,有足够的时间来使用Java进行开发并拥有Java开发人员。可以吗
Gulshan

Gulshan:是的,您可以这样说
user281377 2011年

3
还有很多其他原因,例如,它s肿,企业化并且它是Java(如果您将Scala或其他东西用于JVM,则可以忽略最后一个)。
雷诺斯2011年

1
@Raynos,所以您推荐什么呢?

2
@ThorbjørnRavnAndersen确实取决于要求。如果要求是通用的(非特定领域),则使用对开发人员和服务器最方便的平台。
雷诺斯2011年

19

Java的中小型网站使用。关键点是,与PHP相比,Java网站的免费网络托管要少得多,这意味着除非您有足够的资源来托管自己的Web服务器,否则您可能不会选择Java。

请注意,对于Java EE 6,尤其是Web概要文件,其中包含许多标准技术,它们可以创建功能非常强大的Web应用程序,而无需编写太多代码。不幸的是,它还不是主流。

请注意,最近Google应用程序引擎已对此进行了一些更改,该应用程序允许您在云中免费为中低流量站点免费部署标准Java Web应用程序(有一些限制)。


在任何情况下,我都不会在免费的虚拟主机中托管我的网站。但是问题是付费Java虚拟主机是否存在问题?例如,它非常昂贵吗?
戈马

1
@saeed,不是这样。大多数人只是选择最便宜的选项并相应地进行编码。

例如,杰夫远比其他人昂贵吗?有共享的Java托管吗?
戈马

@Saeed,由于某些技术原因,您无法在单个Linux og Windows框上将尽可能多的JVM分组,就无法创建共享的LAMP实例,这暗含着托管的JVM比托管的LAMP昂贵。Google使用不同的JVM,这意味着他们可以免费提供它。

@Thorbjörn:您是否了解Google的链接?我听说他们使用Jetty,但是我对他们的解决方案了解不多。
乔纳斯(Jonas)

12

如果您的平台是UNIX / Linux,则需要丰富的工具集,例如对象/关系映射,安全性,Web服务的复杂编排等。
(我们不是在谈论简单的网站,对吗?)


1
您也可以从脚本语言中获得这些东西-查看Python和SQLAlchemy。甚至Rails也使用ORM(ActiveRecord)并具有良好的安全性。
Brian D.

3
确实,但是我认为它们没有Hibernate,Spring Framework和BPEL框架那么强大。
Sorantis 2011年

1
非UNIX / Windows上的Java有什么问题。
Tom Hawtin-大头钉

2
没有。但是在Windows上,您拥有.NET
Sorantis 2011年

2
-1您的声音听起来像其他任何替代方法都没有合适的工具。
雷诺斯

9

每当另一个Java团队激怒我时,我都会通过查找类似这样的问题来发泄怒气。让我重申一下。我是一位客户端开发人员,至今已经有5年了。我曾经在许多网站上工作过,从一次性的大部分内容微型网站,到像Sears一样庞大的网站,再到需要真正的UI专业知识的更复杂的应用程序类型的网站。我已经处理过Rails,PHP,.net Web表单(ew)、. net MVC(更好),以及用于Web开发的Java解决方案的一揽子安排,这些开发人员和开发人员伴随着这一切,这些都是彻底的灾难。我也写了一些Python,开始研究Django。

我在Java团队中的经历普遍糟糕。这些工具始终是PITA。开发人员从不希望自己做错了什么,一旦排除了问题,就让他们重新调查自己的地盘,就像拔牙一样。根据我的经验,与Java团队打交道的第一个伤亡是将开发时间转换为电子邮件时间,并写了许多冗长的解释来说明问题的根源在他们的末端。除非您确实想要对其进行一些控制,否则HTML通常不是他们的问题。然后,所有事情可能都会陷入困境,因为您实际上想移动一些上层div。

我不喜欢这种语言,但我认为真正的问题是文化和事实,即接受程度如此之广,中间让人感到平庸。我怀疑这种文化源于Java的营销方式。编写一次,到处部署。翻译:“您只需要学习一件事!” 那些发现这种吸引力的人基本上希望对每个钉子都像一把巨大的锤子一样挥舞Java,同时在网络开发方面尽可能少地磨练自己的手艺。

因此,如果您的开发人员知道Java和其他语言,但实际上仍然偏爱Java,那么我想说,是的,如果这似乎是正确的解决方案,请继续。但是,如果您的Java开发人员知道Java,而其他一切都几乎不符合在简历中真正成为要点的标准,请让他们使用HTML端构建具有各种半复杂页面的简单应用程序,然后尝试一下简单的测试。破坏一些HTML。尝试让他们找出问题所在。如果他们开始解决的迫在眉睫的问题是指责自己,那就让他们远离Web开发。Web开发人员是多学科的,因此需要对该领域的积极关注才能取得成功。对于那些只想保持一种语言知识并且对问题感到恐惧而不是对解决问题感兴趣的人来说,这不是一个地方。

我并不是在断言Java本身就是无能的根源,而且我听说过Spring很好。我确定那里有称职的Java团队。我只是还没有碰上一个,我不认为这是一个巧合。我认为Sun与它有很多关系。我还认为,像IT部门或IT部门这样的网络团队与之有很大关系。


1
我遇到的问题与您描述的相同,但从未想到它可能取决于编程语言。您是否认为使用PHP进行编程的人更开放,更灵活?
ВиталийОлегович

PHP 100%与开发人员有关,而与周围文化无关。我不喜欢它的核心缺乏一致性,但是我会相信中级PHP团队进行Web开发的工作,而我却不相信Java团队。有经验的PHP开发人员除了网络和他(她)可能被雇用来获得学位/证书的经验之外,几乎没有其他工作经验,这有帮助。Java问题可能部分是由于该语言固有的刚性所致,但老实说,这更多地是关于Java开发人员的培训方式,采用Java解决方案以及雇用Java开发人员的本质。
埃里克·雷彭

1
@Erik Reppen:我认为您的经验太笼统了:我认为Java团队并不比使用其他语言的团队更糟糕,或者至少不比平均水平差。我知道两家非常擅长使用Java的商店。首先,使用Java和Ruby(每个项目约占50%)进行项目。第二个工作主要在Java中进行,但是在Scala和Common Lisp中完成了单独的项目。
乔治

@ Giorgio我错过了这个,但是我和其他人一起通过.NET,Rails,Java和PHP处理后端。我并没有指望使用其他语言的一次性经验,而糟糕的开发人员当然不是Java独有的。而且,正如我所说,我100%肯定那里有非常称职的Java团队。不必非要有人吮吸它,但IMO,我并不过分概括。中级水平的Java开发人员存在问题。根据我的经验,这是一种文化现象。如此讨厌的人使我停止与Java商店打交道,除非我认识有问题的开发人员。
Erik Reppen 2013年

5

Java非常适合小型网站,例如,您可以使JSP页面与Java Web服务器(例如Tomcat)一起快速运行。

尽管以我的经验,Java在大型网站上更为常见,那里对复杂的服务器端处理有更大的需求-在这种情况下,您会发现使用了更复杂的Java框架,例如JavaServer Faces(JSF)。

需要注意的重要一点是,从历史上看,在许多廉价的Web托管设置中都无法进行完整的Java安装,因此可以解释这些环境中其他语言(如PHP)的普遍性。


这是否意味着托管Java Web应用程序太昂贵了?还是不如PHP便宜?您能给我一个java的很好的weh主机链接,以便查看价格吗?我进行了搜索,但我不知道哪个具有标准价格,因此可以对其进行全面了解。
戈马

1
托管Java Web应用程序并不昂贵,您只需要一个托管提供程序就可以运行Java应用程序。您可以在其中获得登录帐户的任何Linux托管环境都很好-我个人将Amazon Web Services上的Ubuntu用于Java托管。
mikera 2011年

2

在Web开发中使用Java的主要原因归结为以下几点:

  • 客户要求它。不管好坏,有些客户拥有“可接受的技术列表”,如果您提出不在该列表中的内容,则最好有一个很好的解释-为什么以及为什么不能使用该列表中的内容。
  • 在Windows上开发,在Unix上部署。就像您在普通客户端计算机上所期望的那样,大多数开发机是Windows,一些是Mac,很少是Linux。但是,在服务器上,您与Windows服务器一样可能会看到某种形式的Unix。一旦部署到任何地方,Java可能是最接近写的语言(虽然不是完美的,但是比某些替代方法更好)。
  • 管理选择。让我们面对现实吧,选择Java而不是使用另一种语言,与纯粹基于该语言的优点相比,能够找到程序员和替换离开项目的团队成员更多的关系。

关于#2:请正确配置您的IDE。Eclipse有一个愚蠢的想法,即默认使用一些Windowish文件编码,这会对Linux服务器造成严重破坏。
Eldelshell

我实际上是指某些文件的存放位置以及您与操作系统进行交互的任何时间的假设。
Berin Loritsch 2011年

“一旦部署到任何地方,C可能都是最接近写的”,我为您解决了这一问题。
雷诺斯

@Raynos,如果仅那是真的。不幸的是,除非在所有平台上都具有相同的标准库,否则无法成立。C语言的核心是非常可移植的,我给你。但是,任何特定于OS的东西(例如创建线程,打开套接字或创建UI元素)在API中都有一些无法通过简单的重新编译移植的东西。使用Java,不需要重新编译,只需使用新的系统API更改代码即可。
Berin Loritsch 2011年

@BerinLoritsch您的意思是说40年后,我们没有适用于特定于OS的东西的通用API,而这些API仅通过简单的重新编译即可跨平台工作?我可以想像它在80年代是正确的。
雷诺斯

2

从技术上讲:

  • 如果可以定义适合热点优化器的体系结构。
  • 如果您预料到Java会带来大量的OO开销。

如果要启动Web应用程序,则将使用Ruby on Rails进行设计,以使RoR达到其性能扩展极限时可以将热点交换出去。

Java具有一定的COBOL气味,“低端程序员使用Java”一词随处可见,而Oracle的壁画也无济于事。如果您有选择,请选择一种吸引顶尖开发人员的语言。


“选择一种吸引顶尖开发人员的语言。” 例?
Eldelshell

1
@Ubersoldat:Go,Ruby,Clojure,Haskell,Python都是可以做到这一点的语言。
保罗·内森

Python很不错,因为它实际上在Java伪装的许多事情上都取得了成功。当您必须使用其他某种语言解决问题时,使其与其他人一起玩起来并不难。我不了解Ruby,但从我的经验来看,Rails开发人员是一个小技巧。这就是JQuery效果。知道自己在做什么的人会喜欢它,因为它在正确的手中快速有效。不知道自己在做什么的人喜欢它,因为他们不必了解太多。
埃里克·雷彭

@Erik Reppen:另一方面,Ruby作为一种语言比Python具有更好,更一致的设计。我真的认为,这些语言比较通常只是一种口味问题,并且倾向于使用他们更熟悉的语言。
乔治

0

很简单:当主要关注后端性能时,请使用Java。编码时会有更多开销,但是代码将在时间上直接执行1/200至1/500。PHP,Ruby和其他动态类型化的语言总是比Java或.net服务器慢得多。

网路上的大多数解决方案都不需要这个。Twitter直到Rails开始流行之后才放弃Rails。


-1

这不是唯一的原因,但是随着构建具有复杂的类似于应用程序的前端的网站的日益普及,同时仍然具有在服务器上执行“填充”的逻辑-无需解释Java为什么至少与其他Java等同的理由服务器端的选项。但是在客户端,如果有任何JavaScript将很快变成代码维护的噩梦,并且通过使用GWT使这些内容保持一定距离,以便可以使用Java进行编码,则可以在服务器上兼得两者进行繁重的工作,并由客户的处理程序为他们提供“体验”。学习将其与jQuery之类的东西集成在一起,您也可以拥有所有想要的东西。

没有其他选择方面的专家,但是如果其他人可以提出具有相同灵活性和广度的专家,则很高兴听到它。


jQuery +1 :))
Abel

2
-1代表“ javascript变成代码维护的噩梦”,这只是让Java开发人员无需进行任何培训或学习JavaScript即可编写javascript的副作用。而GWT的主要缺点是抽象的泄漏,祝您好运,使其在移动设备上表现出色。
雷诺斯2011年

Java的严格性(IMO)的问题在于,您最终会遇到许多开发人员,他们不了解为什么为什么要以最初的方式强行组织其代码。当一切都必须看起来像OOP时,有时不可避免的结果是实际上什么都没有。
埃里克·雷彭

-1

我之所以选择Java,主要是因为您需要使用分布式事务,这对于许多公司而言可能是一个大问题。但是,您仍然可以使用自己喜欢的脚本语言进行Web开发,并且仅在需要快速/分布式事务时才将工作委托给Java。


-1

我相信您的应用程序将变得非常复杂,需要许多人进行开发,具有许多复杂的模块,复杂的业务逻辑,并且必须与许多其他企业应用程序进行通信。

无论如何,您还可以在Grails中进行开发,该Grails提供了许多不错的功能,大大简化了开发,并且很快就成熟了。


-1

Java是可以的,但是如果性能不是至关重要的话,那么使用其他语言即可轻松获得相同的结果。


2
当您应该使用C语言和汇编语言而不是Java语言编写时,“性能不是至关重要的”。
雷诺斯

基准与经验的对比,在我作为客户端开发人员的经历中,Java网站表现最差。不过,这可能是人才中位数问题,而不是语言问题。
埃里克·雷彭

2
@ErikReppen:绝对是天赋。服务器上的Java速度仅次于C / C ++。PHP或Rails只是无法比较。但是Java的库和某些工具使得在完成无用的复杂事情上失去所有速度变得太容易了。
Zan Lynx 2012年

-1

Java是一种静态类型的语言,如果您的公司没有MSDN订阅,则Java比用于Web开发的其他静态类型的语言(即C#和VB.net)便宜。静态类型的语言非常适合大中型项目,复杂的域规则和大量的后端代码,因为您可以更好地组织类,而IDE将帮助您查找代码中的错误。

使用动态类型的语言,例如PHP,Python,Ruby,您的开发将更快,但是您将不得不更好地测试代码。如果您没有太多的时间和金钱,并且您的需求变化很快,并且您不必进行非常复杂的计算,那么动态语言会更好。


-2

安全

大型公司选择Java而不是其他解决方案的主要原因是因为它被认为更加安全。

这主要是因为它得到了这么大公司(现在是oracle)的支持。

应该考虑到Java提供了很高的安全性以及出色的支持和分析(尽管确实要付出一定的代价)。


7
嗯...安全性神奇地来自语言本身或什么?
Mchl 2011年

1
您知道Oracle不是Java servlet容器的唯一提供者,不是吗?
Mchl

6
圣战!战斗战斗!
亚伯

2
@Mchl其中一些来自语言,或更确切地说来自其VM。您有几次看到针对Java应用服务器的缓冲区溢出黑客?只是不值得付出努力。话虽这么说,“行业”认为Java比它更安全,并且错误的安全感可能会反击。
biziclop 2011年

1
我的意思是,您需要区分Java语言和Java运行时环境。没有什么能使Java语言比其他任何语言都更加安全。另一方面,JVM被设计为“沙盒化” Java字节码执行,但其安全性取决于特定的实现。不过,对于错误的安全感也有好处。
Mchl 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.