作为一名专业的Java程序员,我一直在试图理解-为什么讨厌Java对现代Web应用程序的使用?

我注意到现代Web初创企业的趋势,其中相对较小的百分比似乎是在使用Java(与Java的整体普及率相比)。当我问了一些有关此问题的信息时,通常会收到诸如“我满怀热情地讨厌Java”之类的回复。但是似乎没有人真的能够给出明确的答案。结果。

,结果,我花了一些时间来学习Ruby / Rails,基本上是要找出我所缺少的东西。但是我忍不住想自己:“如果使用Java,我可以更快地完成此工作”,这主要是由于我的相对经验水平。

但是也因为我没有看到Java出现任何严重的“遗漏”,因此无法构建相同的应用程序。

这使我想到了我的问题:

为什么现代Web应用程序中未使用Java?


这是语言的弱点吗?
因为它存在了很长时间(它与它的较早的技术有不公平的联系,并且由于其“现代”功能而没有得到认可),这是Java的不公正的刻板印象吗?
Java开发人员的负面刻板印象是否太强了? (Java不再是“酷”了)
用其他语言编写的应用程序真的可以更快地构建,更容易维护并且性能更好吗?
Java是否仅由太慢的大公司使用?适应新的语言?


评论

我认为你是不正确的:它仍然在使用,它只是失去了冷静的因素

@Graham Lee:Java曾经很棒吗?我一定错过了什么。好吧,我想这是冷咖啡,但是凉吗?我认为主要原因是Java(尤其是企业Java框架)已经并且仍在过度设计中。您不能认为它们是轻量级的,只是使用它们是因为您需要平台的分布/平衡/可伸缩性功能,并且出于同质化的原因,也希望使用Java进行的前端框架。 />
也许是因为它不现代? :P而且Java从来都不是很酷的,仅仅是因为它把编程中的hacking部分丢掉了。

@Falcon Java刚推出时就很酷,Sun在炒作Java方面做得很好,无论炒作是否合理与它是否酷都没有关系,很多很酷的东西都是无缘无故地被炒作。 br />
@Falcon,您应该看一下用Java EE 6中的JSF 2.0创建Web应用程序并将其与您的经验进行比较。您可能会感到惊喜。

#1 楼

现代初创企业需要尽快进入市场。他们不需要花费大约六个月的时间来发布Java Web应用程序。
例如,Twitter是使用Rails / Ruby构建的,但是一旦变得不可扩展,它们便迁移到JVM。 ->编译->在(Rails / Django / Grails)之类的框架中部署时:运行测试服务器->代码->更改并查看会发生什么。

好消息是JRebel允许您会立即看到代码更改。

评论


Play Framework也类似于Ruby on Rails,但适用于Java。代码->更新浏览器。

–乔纳斯(Jonas)
11年8月18日在16:15

只是尝试摆脱一些误解。正如许多人认为的那样,Java EE并不是Java服务器端唯一的东西。

–乔纳斯(Jonas)
2011年8月18日在16:19



Facebook也做类似的事情。他们的代码库使用PHP,但是由于速度和可伸缩性问题,他们不得不编写将PHP编译为C ++的编译器(HipHop),然后使用g ++对其进行编译。有趣的是,每个人都在谈论ruby和PHP的强大之处,以及所有站点都是围绕它们构建的,但是当您查看它们的效率如何时,大多数大型组织都不得不改用其他方法。如果我没记错的话,出于这个原因,Craigs List有很多用C / C ++编写的后端代码。

– Kibbee
2011年8月19日在13:24

1)使用Eclipse,在您键入内容时会进行编译,因此您几乎不会注意到它。另外,在Eclipse中运行Tomcat,我可以在一秒钟内重新启动应用程序。重启我的应用很少受到阻碍2)伙计们,没有灵丹妙药。 Ruby或任何语言都无法使您快10倍。 Java开发人员的问题通常是增加时间,但是如果您知道自己在做什么,则可以在10分钟内完成一个项目。

– alex
2011-12-14 22:41

Java和任何其他静态语言都有两个巨大的好处,几乎无忧地进行重构,并且无需文档即可发现API。

–伊朗棉兰
2012年9月5日23:27



#2 楼

以我的经验,用于Web应用程序的Java对于小型应用程序来说是多余的。例如,一个具有一个数据库表的简单博客包含博客条目,可以用更简单的方法完成。

我通常看到Java在与许多其他系统(例如大型机后端和数据库以及对等Web服务)进行通信的大型Web应用程序(例如银行和保险公司)中表现更好。后台批处理系统...都在同一个应用程序中。)

从我所看到的来看,JavaEE Web应用程序的体系结构通常比小型/简单Web应用程序所需的体系结构更多。

评论


对于“小型”应用程序,如果您必须(因为这是“标准”,并且公司使用它)与诸如Websphere之类的庞然大物的应用程序服务器一起工作,则情况更是如此,而例如Tomcat通常就足够了。 ..为什么哦,为什么我必须使用那个混乱的管理控制台?叹...

–贾琳
2011年8月18日14:53



@Jalayn:根据我的经验,这是因为他们只希望为所有内容维护一个应用程序服务器程序,而不是为Team A管理WebSphere,为Team B管理Tomcat,为Team C管理Glassfish(或其他)。感觉也一样,但是是的,这也让我感到沮丧。

– FrustratedWithFormsDesigner
11年8月18日在15:00

Java EE确实如此,但是现在有了Play框架,它将使您的Java Web应用程序像Ruby on Rails一样轻巧高效。

–乔纳斯(Jonas)
11年8月18日在15:38

新的Java 6 EE(尤其是Web配置文件)允许一些非常简单的Web应用程序。

–user1249
11年8月18日在17:00

@ThorbjørnRavnAndersen该应用程序可能很简单,但是对框架的理解却并非如此,对诸如Ant或Maven之类的主要工具的理解也是如此。新手的学习曲线非常庞大,充满了嵌套的首字母缩略词层,规格(例如JAX-RS)和impls(例如Jackson)之间的混淆等等。如果您想真正了解自己在做什么,那么做简单的事情非常复杂。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:19

#3 楼

在4年前改用python之前,我已经为Java Web应用程序编程了10年。我觉得使用python可以提高生产力,并且可以在更短的时间内完成更多工作,老实说,当我使用python开发时,我会感到更加快乐。根据我的个人经验,以下是一些我认为python比Java更好的原因,您的年龄可能会非常好。在Java应用程序中,Struts刚刚问世,虽然效果不佳,但这是最好的选择。在此过程中,我创建了一堆struts应用程序,以及其他一些框架。每当有新的框架出现(Tapestry,Wicket,GWT,stripe,grails,AppFuse,Play,RichFaces,Spring等)时,我都会尝试一下,看看它是否更好,而且大多数时候它只会好一点,有时一点也不好。我确实必须说play框架是朝着正确方向迈出的一步。

不包括电池:

Java最令人讨厌的部分之一是,您所使用的库未包含在Java本身中,因此您必须从apache commons之类的地方包含大量的第三方库。如果将hibernate之类的东西与其他任何大型库一起使用,则会导致Jar依赖地狱,其中hibernate需要一个版本的jar,而其他版本则需要另一个版本。如果您以错误的顺序加载jar文件,那么您很不走运。您需要依靠诸如maven和ivy之类的工具来管理您的依赖关系,这只会给您的项目带来更多的依赖关系,从而导致项目庞大。我有一些用于最简单的Web应用程序的战争文件100MB +战争文件。

太多的选择:

由于某种原因,在Java中似乎有太多不同的方法可以完成相同的事情。根据维基百科(http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java)和Java,有23种不同的ORM(http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java)仅举几个例子。如果您查看其他语言,它们的数量会更合理。有人认为拥有很多选择是一件好事,但这不是,这会导致开发人员社区浪费大量精力,每个人都在重蹈覆辙,如果您是这种语言的新手,可供选择的应用程序太多。他们特别渴望记忆。像任何软件一样,它们都可以进行调整以减少其资源占用,但是与其他语言相比,它们的开箱即用设置非常可怕。在过去,我曾经使用过weblogic,websphere,Jboss,tomcat和jetty。当我被迫使用EJB时​​,我只使用了前三个,但是即使您没有使用EJB,它们也都是大型应用服务器,有时难以配置和正常运行。 Tomcat和Jetty更好,更容易设置,但仍然是资源浪费。

应用程序托管:

如果您没有运行自己的服务器,那么很难以合理的价格找到Java应用程序的共享托管。主要原因是因为与其他语言相比,Java应用程序需要更多的内存,因此,当共享托管服务提供商可以在同一位置运行5个php站点时,花宝贵的RAM运行Java站点没有意义。这意味着提供Java托管的提供商会更少,这反过来又意味着运行您的网站的成本更高。

开发时间:

当我使用Java开发时,发现自己的速度要慢于python的速度。我需要进行更改,编译,重新部署然后进行测试,这会减慢迭代过程。我知道有一些方法可以使此速度更快,但是即使是最好的情况,我也觉得比Python中的速度慢得多。

在python中执行相同操作的样板代码也少得多,因此我也花了更少的时间来开发代码。很多部分,很多API和接口只是使您要执行的操作变得复杂的方式。每个人和他们的兄弟都认为他们是Java架构师,这导致难以使用和开发的大型复杂系统。

IDE:

当我用Java进行开发时,我陷入了IDE的束缚,没有它我迷失了。 IntelliJ是市场上最好的IDE,并且很难切换到python,因为python没有类似的东西。因此,我没有使用IDE,而是使用了textmate,它只是一个普通的文本编辑器。起初很难,但是因为它只是一个文本编辑器,所以它是一个非常快速且响应迅速的应用程序。我可以在几秒钟内打开我的整个项目,而当我想在IDE中打开项目时,可能需要一分钟或更长时间,而这需要一台具有大量RAM的机器。 IntelliJ的制造商推出了一个名为pycharm的python编辑器,当它第一次发布时我就买了它,它很棒。但是我意识到我不需要python的IDE,使用文本编辑器就可以了。当我不时回到需要做的Java Web应用程序上工作时,我尝试使用文本编辑器,但是我还没有完全掌握它。我个人更需要Java的IDE,因为如果我弄乱了某些东西,则重新编译和重新部署将花费更长的时间,这会降低我的速度。

ORM:

当我刚开始使用Hibernate作为ORM时,我认为它很棒,有问题,虽然不是完美的,但是比我以前做的更好。我对此感到满意,直到我在python项目上使用Django的ORM开发了一个应用程序,然后打开了我的眼睛,这就是ORM应该如何工作的方式。完成那个项目后,我回到了休眠状态,我感到很失望,渴望回到Django的ORM。另一个很棒的python ORM是sqlalchemy,它与Django的ORM类似,但有些不同。我对ROR的ORM的经验有限,但据我所知,它也相当不错。

模板: ,我想我都尝试过所有方法(平铺,freemarker,力度等)。它们中的大多数仅提供基本功能,并且很难使用。在Python方面,我最喜欢的两个是Django模板和Jinja2,它们具有我在模板引擎中可能需要的一切,并且非常易于使用。

评论


我在很多方面与您保持一致,但是有些问题。编译/测试循环:使用Eclipse的动态Web模块和/或JRebel,它就不存在了;大。笨重:JBoss AS 7非常轻便,快速。如果您不希望使用EE,则可以使用Tomcat或Jetty,它们甚至都没有。测试:Arquillian是我在任何语言中都使用过的最好的测试工具,尽管它只是变得足够成熟而可以使用。依赖地狱:只需使用Maven;它应该是JAva的标准和强制性部分。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:29

请注意,以上所有内容都会增加“不包括电池”的问题,这是一个很大的问题。像Java EE这样的感觉是一个子框架,您应该在该子框架上构建自己的框架然后构建应用程序。效率很低。每个工具都令人毛骨悚然,而JSF2只是破坏开发人员生产力的一种工具。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:30

我还认为您错过了一个关键点:学习曲线和错误确实使事情变慢了。

–克雷格·林格(Craig Ringer)
2012年6月11日在1:31



@CraigRinger我没有使用过eclipse的动态Web模块或JRebel,所以您说的对,它可能不见了。

–肯·科克伦
2012年6月11日下午5:01

如果您喜欢IntelliJ,请尝试PyCharm –它基于相同的内核。

– Tamlyn
15年7月8日在6:18

#4 楼

初创企业想要闪亮。无论什么闪闪发光的是:RoR,Groovy,Grails,带有PHP的OOP,Foobar,Wibble,Nalf等。

企业想要稳定,可靠和可扩展的:Java和.NET符合要求正确)。

当前演出:金融服务。平台:ColdFusion(基本上是Java标记库)和Java。

以前的演出:


教育测试服务-ColdFusion
高风险保险-ColdFusion和Java
401k-ColdFusion和Java
旅行-具有内部ColdFusion应用程序的Java
证券-ColdFusion(Java之前的版本)

这些都是高容量的,高安全性的网站。在这些公司中,没有人曾经考虑过PHP,有些人看着RoR,看到了太多的问题。这家401k公司有一个姊妹公司,它与有能力的开发人员一起运行.NET应用程序,该应用程序每周都在崩溃。他们最终将其转换为Java并获得了稳定性。

唯一看不起Java的人是没有或几乎没有Java实际经验,或者曾参与过较差的实现并且现在很害羞的人。如果所有酷孩子都在使用它们,他们会看到闪闪发亮的身影,为什么不选择我呢?

评论


“这家401k公司有一家姊妹公司与有能力的开发人员一起运行.NET应用程序,该应用程序每周都在崩溃,他们最终将其转换为Java并获得了稳定性。”大声笑:),听说过相反的情况。

–丹
11年8月24日在8:58

好吧,当然有。 Web应用程序比编写代码要多得多,您必须知道如何调整服务器,编写最佳的SQL等。该公司只有2位.NET开发人员,没有真正的服务器管理员。购买了我所在公司的公司也获得了该应用程序。他们是一家大型Java商店,因此有更多可用资源来保证稳定性。

– Adrian J. Moreno
11年8月24日在18:45



对我来说,您写的那句话是因果关系,这似乎对我不屑一顾。转换为Java =稳定度提高了吗?我们都知道那不是原因。另外,对所有ColdFusion体验感到抱歉;)

–乔丹
11年8月25日在7:28

太公平了,投资者往往希望看到今年的风采。但是我个人仍然认为快速的原型开发有一个更糟糕的选择,除非找到不容易找到的高质量的Java开发人员。

–埃里克·雷彭(Erik Reppen)
13年6月12日在21:28

很难找到的非常高质量的Java开发人员-确实如此。

–luis.espinal
2013年8月3日15:57

#5 楼

FrustratedWithFormsDesigner的回答的补充:由于我猜您的问题更多地针对较小的站点,因此对于很多人来说,您需要考虑一个重要方面:托管对于PHP来说是无处不在的,但对于Java或ASP站点则更为困难。但是,这并不是那些语言的缺陷。

评论


我认为这已经改变了,但是,现在您可以免费在GAE上托管Java Web应用程序。

–马哈茂德·侯赛姆(Mahmoud Hossam)
11年8月18日在15:41

+1用于托管Java。尽管ASP.Net并不难找到,而且很便宜。我每月为共享的ASP.Net托管支付8美元。另一方面,我想尝试用Java建立一个站点,却找不到运行Java的共享主机,而不得不使用VPS对学习项目不感兴趣。

–杰蒂
11年8月18日在15:42

为此+1。在PHP上比在Java上在服务器上托管许多站点要容易得多,此外,与Java相比,为PHP找到便宜的Web托管解决方案要容易得多。

–乔纳斯(Jonas)
11年8月18日在15:43

您是正确的@Mark,已修复。

–sebastiangeiger
11年8月18日在17:21

@Kibbee-Arvixe那是我使用的人。我有personalASP Pro计划。

–杰蒂
2011年8月19日13:45



#6 楼

Java绝对用于现代Web应用程序开发。特别是一旦您进入了Web应用程序范围的更大/更复杂/可扩展的一端。

如果您对现代,高效的工具和框架感兴趣,请查看:


Play框架
Google Web Toolkit
Vaadin
Tapestry 5

但是我认为JVM平台上最真正的现代Web开发很可能会可以使用一种新的JVM语言而不是直接使用Java来完成,而Java只是提供了基础库和后端基础结构方面的骨干。在Groovy(Grails),Scala(Lift and Play),JRuby(JRuby on Rails)和Clojure(Noir,Ring / Enlive +很多自定义框架)中,有很多Web开发正在进行。 >
随着所有创新都发生在新的JVM语言空间中,我个人怀疑Java最终将成为“服务器端编程的汇编程序”。

评论


Vaadin是创建Intranet和大型企业应用程序的绝佳工具。我猜这不太适合初创公司。除非您接受外观,否则很难更改它。

–naugtur
2012年6月10日上午9:13

同意;删除JSF2并使用理智而富有成效的工具,Java EE 6就很棒。虽然学习曲线仍然很大。

–克雷格·林格(Craig Ringer)
2012年6月11日,下午1:22

您可以将Tapestry5(tapestry.apache.org)添加到现代Java Web框架列表中。

– Neeme Praks
2012年6月12日上午10:09

@CraigRinger JSF很简单。您的评论听起来像是问题本身:一个宗教咆哮

– jwenting
15年6月24日在11:09

@jwenting好了,已经三年了,从那时起,它在文档和外部工具方面有了一些改进。当我在EE 6堆栈上工作时,这简直太可怕了,而且如果支持Glassfish 3和AS 7也是如此。

–克雷格·林格(Craig Ringer)
2015年6月24日11:10



#7 楼

Google,Amazon或LinkedIn算是现代吗?

Java用于现代Web应用程序。如果您查看整个企业,则它是Web应用程序(内部)使用最多的语言。

话虽如此,Java经历了一段时期,当时它的Web开发标准试图将所有人的一切都做到了(可以说仍然如此)。 “不要重复自己”是对xml hell和Java Web开发的较长构建周期的回应。结果,Java(EJB,Struts,JSF等)被视为所有新范例都试图克服的事情。

Java,语言是冗长的。这是一个利弊(对于维护来说很棒,对于开发来说很糟糕)。有许多现代语言功能尚未融入Java中,这些功能可以大大减少编码时间(属性,事件,闭包,生成器,列表理解等)。因此,当您使用更现代的语言时,可能会感到沮丧。也就是说,如果不成为C#正在变成的老鼠巢,就很难将它们添加到成熟的语言中。

现代Web开发中使用的许多语言都是动态键入的。这使得工具可以在编写代码时动态地重新加载代码(这很难用静态语言jrebel完成)。由于Web开发适合快速迭代,因此动态重载是一个巨大的胜利。它显着减少了未开发项目的开发周期,并使得更容易获得正确的UI和UX(自然而然的尝试和错误)。

静态语言也有自己的位置。对于复杂的后端逻辑,必须运行数年,必须无问题地扩展,必须非常快,并且必须完全无错误,因此首选静态类型的语言(例如Java或C)。

此外,随着开发人员人数/营业额的增长以及产品的成熟,有好心的人可能会引入错误的火箭。一个精心设计的Java项目(这些php吸血鬼的接口,模式和圣水:)所执行的严格和纪律有助于降低长期风险。虽然这也可以通过单元测试来实现,但是从静态检查(以及诸如findbugs和clang的静态分析器)派生的安全网提供了内置的代码覆盖级别,很难用手写测试来复制。不要误会我的意思,应该有单元测试和功能测试,但是真正的组织从来没有达到100%的覆盖率。对于他们检查的内容,静态分析器会执行。

因此,在大型项目中(由团队规模而不是代码规模来定义),在独立开发的代码块之间存在复杂的互操作性,仍然首选Java之类的语言。示例包括大型/复杂的Web应用程序,例如金融经纪人(ameritrade),金融交易所(纳斯达克,纽约证券交易所,.net失败后可能是伦敦)的应用程序,在线银行业务(几乎全部),电子邮件(google),拍卖(ebay)等。

从性能和规模的角度来看,Java平台无可比拟,因为它结合了Web应用程序的可伸缩性和性能(取决于您对facebook应用程序分区的计数方式)。例如,Twitter必须在Java VM的Scala中重写其Ruby基础结构的大部分内容,以便将失败的鲸鱼抛诸脑后。我听说过其他大型示例,但它们现在使我难以理解。

还值得考虑安全性。尽管Java浏览器插件在安全漏洞方面应有尽有,但Java平台本身是创建的更安全的平台之一。 Java Web应用程序具有非常安全的声誉。长期以来,它的编码实践,库和体系结构不鼓励犯错误,这些错误使诸如sql注入或缓冲区溢出等攻击成为可能。虽然其他Web平台(轨道)具有良好的安全性声誉,但是没有一个比Java更好。

最重要的是,大多数Web应用程序在技术上都很简单。简单来说,Java常常过于矫over过正(就像我们以前用C编写它们时一样:)。但是,如果Web应用程序很复杂(后端或其他方式),或者预计将有100多个开发人员,那么Java很难被击败。

-

在个人笔记上,我经常使用Grails,因为它给了我两全其美的感觉(关于JRuby的说法也是如此,我听说它在Ruby世界中越来越流行)。

BTW-我发现PHP的兴起确实令人困惑。 PHP作为一种语言,在可读性方面与perl大致等效,在结果质量上与VB大致等效。它鼓励令人毛骨悚然的做法,几乎无法维护,第三方库很少能按预期工作,并且它的语法会使拉里·沃尔(Larry Wall)……...……墙。我能想到的唯一解释是,它适合增量学习(如VB)。换句话说,您几乎不了解编程/管理就可以完成一些有用的事情,并且可以一次扩展一小部分知识。从采用的角度来看,有很多要说的。但是,对于任何人都必须支持或替换企业/制造世界中“程序员”编写的数十亿个VB应用程序之一,您可能会摇头并计划退休。 :)

评论


要详细说明“ C#正在变成的老鼠巢”点吗?

–XåpplI'-I0llwlg'I-
2013年6月2日4:35

我不太确定为什么您说“不要重复自己”是对xml地狱和Java Web开发的较长构建周期的回应。 DRY成为敏捷社区中的一个概念,当时大多数人都使用Java以外的语言。

–法律
2014年2月20日下午0:29

#8 楼

好吧,最近我遇到了一个Java专家,他对新的Spring Data项目感到非常兴奋,因为它需要很少的代码来获得对数据库的基本CRUD访问。

我可以构建一个CRUD使用Rails(不仅是数据库访问,还包括视图和控制器)和一些命令的应用程序。 ,1条命令启动服务器。)

与语言无关,它与工具有关。动态语言似乎倾向于具有删除大量样板代码的工具和框架。 (要弥补我们缺乏为我们生成样板的功能强大的IDE。)

我还觉得动态语言往往使编写此类工具和框架变得容易得多。我可以轻松编写出Padrino或Rails(ruby Web框架)的代码,而不是轻松编写出Spring Roo的代码。
这可能是由于我比Ruby更好的事实不过我知道Java。

评论


我个人不喜欢动态语言。当我可以在IDE中快速看到所有类型错误并使用重构工具时,静态语言使我的工作效率更高。您应该看看Play框架,它是一个受Ruby on Rails启发的Java Web框架,可以使您使用Java高效。

–乔纳斯(Jonas)
11年8月18日在15:46

强大的框架(如Rails)也意味着,如果实施不好的东西,那么大多数人就不能用其他东西代替它,因为该组件与框架太紧了。对于Java而言,如果我不喜欢Hibernate,则可以使用诸如cayenne或JPA之类的其他东西。

–土狼21
2012年2月2日在13:14



作为与Django战斗的人,请允许我说:Coyote21是绝对正确的。您可以在五分钟内启动并开始基本的CRUD,但是第二分钟您开始向CRUD添加业务逻辑(更新此记录时,必须在此表中插入一条记录,然后...) 。

–asthasr
2012年3月25日12:45

如果您喜欢Rails但需要Java,请查看Seam Forge。当心,它使用的是令人讨厌的JSF2,但是Forge的自我能力还不错。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:21

您可以在几分钟内使用Roo在Java中构建CRUD应用程序,与Grails(不完全是Java,但仍然是JVM)是​​一回事。Play 1.0具有生成器/脚手架,我想知道它去了哪里...

–伊朗棉兰
2012年9月5日23:32

#9 楼

近年来,Java被定位为“企业”。在初创企业需要的另一侧。在Web应用程序开发中,您需要4件事-无痛的数据库访问,出色的字符串操作,语法糖和快速的迭代过程,以进行应用程序所需的众多小更改。在优先级列表中。

Java也是一种非常不便于编程的语言。就在昨天,它具有在switch语句中使用字符串的革命性功能。而且javascript是一种非常骇人听闻的语言,因此开发前端后,当您返回Java时会感到束缚。

评论


无痛的数据库访问? Spring JDBC或Hibernate可以很好地工作。伟大的字符串操作?不要认为在任何项目中字符串操作都不会超过5%。语法糖?你什至是什么意思。快速的迭代过程? Java拥有它(Eclipse内的Tomcat很轻松)。 Java不好玩吗?唯一缺少的是简洁的匿名类/ lambdas / etc。其他语言中的“有趣”功能往往会混淆并且使事情变得不清楚。开关中的字符串...是的,我必须承认这很糟糕(但是,大多数时候,您应该使用枚举)。

– alex
2011-12-14 22:46

@alex:语法糖Java实际上不能用于DSL,例如,Play的config和routes文件不是Java文件,它是一种外来语法,其作用不如django的settings.py和urls.py;。没有清单的理解;关键数据类型(例如地图,列表)默认情况下不会导入;愚蠢的一档一档真的很碍事; Java API往往会变得多余。另外,在从GET / POST参数接收的字符串之间切换时,不能使用枚举。

– Lie Ryan
2012年6月11日在2:19

@alex有趣。我倾向于在C#中到处使用泛型-尽管从外面看,这可能是由于lamdas功能的增强-所以我可以使用IRepository 和IQueryable where(Expression 表达式)。我想知道当它们得到lambda时,它们是否会在Java中变得更流行?这可能是一个舒适区,但Java只是感觉很冗长-非常像我已经受够了一些东西来制造50种不同类型的汽车,但不能保证任何2个零件都能组合在一起。

–基本
13年7月7日在22:31

我简直无法相信有两个人争辩说Eclipse内的Tomat很轻松,并且使Java开发高效。我发现它使每个开发周期都更快,但是需要日常维护,包括反复刷新,重建,清理tomcat,重新部署,重新启动,有时重新启动Eclipse并重复前面的步骤。如果我的汽车需要这么多的维护,我将永远无法上班。

–布兰登
13年3月20日在12:40

@布兰登,我将第二。我从来没有,从来没有为Node或Python / Django中的配置问题而苦恼。我对RoR失去耐心。依赖于Ant / Mvn / Spring / Hibernate / eclipse的Java代码库是您进入代码之前的噩梦。

–埃里克·雷彭(Erik Reppen)
2013年6月12日19:37

#10 楼

我目前在一家有很多“我讨厌Java”开发人员的公司里工作。它曾经也使我震惊。我当然讨厌Java提供的所有技术。这使得做出决定太困难了。就像当您有太多选择时,您别无选择。您必须花费100个框架的时间才能真正找到适合您的框架。对于大多数应用程序而言,标准的Servelt体系结构非常复杂。 Ruby,Django和其他东西不是这种情况。它们更多是一个单一的框架,而不是语言。

我听到开发人员的最大抱怨是


语法太长了。为了打印某些内容,我们必须编写System.out.print。您真的不能使用像编辑器这样的简单VI并在几个小时内编写出一段有效的代码。
测试框架薄弱。尽管Java和Ruby中的测试框架非常相似,但Ruby通过使事物易于进行测试而向前迈进了一步。如果您在应用程序中广泛使用DB,则尤其如此。甚至许多Web框架都不考虑测试。
模板是很痛苦的。将相对简单的语言变成面条汤。
不酷。大多数Java应用程序都是由大型公司编写的,这与官僚主义相关,而官僚主义在开发人员中并不那么好。人们在考虑Java时不会想到Google。 Google == Python。它也必须做很多事情,没有书出示Y天X。
不喜欢编译。对大多数开发人员来说,编译已经有十年的历史了。在80年代,使用C有意义,但是现代计算机可以做的更多。他们不使用编译语言编写代码。 Java是被编译并用于编写Web应用程序的极少数语言之一。
太多糟糕的概念。即使开发人员已悄悄采用Oops域。他们不喜欢它。他们不喜欢您编写具有10个类的应用程序,而每个类仅做一件事。使您可以打开100多个文件,并想象一下100多个类之间的交互,有时还需要使用框架。使整个编程活动变得很繁琐。大多数语言都可能如此,但是我已经看到Java开发人员非常关注类的作用。是Java开发人员,他们经常想出带有100多个类的代码。从许多角度来看,这都是好事,但非Java开发人员都讨厌它。再加上一个庞大的Java社区,每个社区都以不同的方式思考,没有人真正带领整个社区。他们也看不到社区举办的讲座和会议炫耀所有新奇事物。没有新的好书。看起来Java将会失败,因为几年前它被用来解决太多不同的问题。

评论


(2)是JBoss Arquillian(arquillian.org)的精彩演讲。其余的更多的是JSF2问题而不是Java问题。 IMO最大的问题是学习框架的曲线和大量错误,但是如果您避免使用JSF2,则可以做得很好。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:23

我爱OOP。我也知道OOP,这就是为什么我不同意绝大多数Java开发人员所做的太多事情的原因。您可以编写一个类,但是如果您的代码仍然是混乱的意大利面混乱,那么您真正要做的就是找到一种方法(bean)来编写带有毫无意义的结构的废话过程代码,这些结构最好是简单的函数或结构。

–埃里克·雷彭(Erik Reppen)
2012年12月7日在1:13



“人们在考虑Java时不会想到Google。” ...当我想到Google时,我当然会想到Android及其Dalvik VM(这是Java VM)。我还考虑了一些很棒的东西,例如GWT(从Java自动生成JavaScript)。如果有一家公司对Java的评价很高,那就是Google。比苹果或微软大得多。诚然,Oracle和IBM与Java的关系甚至比Google更为紧密,但如果不建立牢固的Google / Java链接,数十亿个在Java VM上运行Java应用程序的Android设备就很难想像。

–塞德里克·马丁(Cedric Martin)
2013年3月15日23:28



在这些注释中,对JSF2形式@CraigRinger的仇恨很多。 :-)惹恼您的是什么?我发现开始时很复杂,但是一旦开始,我就会喜欢它。当然,在那之前我是使用Spring的,所以其他任何事情都看起来像是一种改进... :-)

–布赖恩·诺伯劳
13年5月20日在13:37

我是Java的OOP开发人员,我不能高估OOP对开发人员的好处。是的,开发确实花费了更多时间,但是较低的错误率,可读性和易于维护的代码是值得的。更不用说通过正确完成OOP,单元测试变得更容易。

–IntelliData
16年8月31日在16:59



#11 楼

进行Java Web开发的框架有相当多的学习曲线,它们对于您所需的东西通常过于矫kill过正,而使工作正常进行所需的许多间接操作只是……痛苦……可以使用。

我曾经在一家从事Spring / Java开发的公司工作,但我发现该框架充其量是繁琐的。关于Spring的框架,我没有什么可高兴的事要说,除了我有一个曾经做过Struts开发的朋友,他认为Struts更糟。网络框架与台式机应用程序或移动(例如android)应用程序完全不同,并且具有很多非常抽象的想法,需要一些时间才能真正掌握(尽管,当然,如果您拥有这样的能力和能力,是一位专业人士,并且做一些非常复杂的事情,例如企业级应用程序)。我喜欢为移动设备或桌面设备编程Java,但是为网络应用程序编程Java?没什么。

我还没有亲自在Ruby / Rails中进行任何编程,但是我曾经做过Struts的朋友现在正在进行Ruby Web编程,并证明了Java难以完成的工作Web编程需要更少的代码和复杂性才能在Ruby中实现。当然,对于不同的语法和语言规则,还有一条学习曲线,但是对于原型应用程序而言,它在获得所需结果所需的代码量方面具有优势。正如其他人提到的那样,可伸缩性也是一个要考虑的问题,也是更成熟的应用程序在更多的流行语言中不被频繁使用的原因之一。

评论


+1为框架过大。它变得疯狂,spring j2ee maven ant休眠,您花费所有时间编写xml配置。

–理查德
11年8月18日在22:27

为框架+1。最初的框架不仅尝试了P ** s Poor(JSP,STRUTS),而且现在我们有三十种选择,而不是RoR之一。

–詹姆斯·安德森(James Anderson)
2011年8月19日下午4:19

不只是框架。这是对事物的淫秽程度毫无意义。公开很多属性意味着您做错了。在其上添加一个普通的getter和setter方法只会增加一个毫无意义的方法调用,并且什么都不会改变,但是没有一个Java开发人员会仅仅将属性悬停在这样的对象上,因为社区加强了某种意义,这比他们已经在做的事情要严重得多。但是认真的是,用XML代替了代码的东西……持续时间超过5分钟是怎么回事?

–埃里克·雷彭(Erik Reppen)
2013年6月12日19:56

#12 楼

归结为成本和趋势。 Web 2.0 Startup是由30岁以下的有远见卓识的人创建的,他的才华超过金钱(我是在概括一下,但这是您平均会看到的)。他将使用自己熟悉的语言,因为他正在编程(可能还有一些朋友)。他很可能是一个自学成才的程序员。

Java被定位为企业环境(对于Java,我指的是语言,框架和标准)。世界各地的IBM,Oracle和BEA都希望向企业出售大量昂贵的工具。

精通Java的步骤既复杂又昂贵。我知道那里的环境正在发生变化,但是为时已晚,又太少了吗?

新兴公司获得发展动力后,增长就来了。招聘有才能的开发人员很困难。大多数“在六周内成为一名程序员”程序会教Java(或.NET),并且市场上充斥着“六周程序员”(奇怪的是,我见过开发人员的简历都说7年的经验仍然显示了六周的知识)。周程序员)。对于六周的程序员来说,使用非主流的非“企业”环境是一种自然的选择。在工作要求之外学习Ruby或Scala需要付出奉献精神和个人投入。这对我来说是候选人潜力最大的指标。

知识带有经验,但是敬业/热情的程序员比没有敬业精神/热情的人更快(平均)获得知识。就像一个喜欢弹吉他的孩子会比一个上课的孩子更快,因为他的父亲造就了他。

评论


我认为这是一个非常好的+1

– sfrj
2011年9月24日17:00

我不同意这样的一段:他很可能是一个自学成才的程序员。如今这是不正确的,如今,该程序的大多数30年代的人都是有能力的程序员,并且至少具有学位。

–土狼21
2012年2月2日于13:17

???我正在绘制原型网络启动程序。我没有说他们有能力。您可以同时自学成才和胜任。我不确定您不同意什么。

–迈克尔·布朗(Michael Brown)
2012年2月2日,13:25

这是我的答案。 Java几乎是当前唯一未经设计的网络技术,因此任何合格的开发人员都可以使用它。答案的第二部分与Paul Graham在《 Python Pardox》中写的差不多

–user16764
2012年6月10日13:00



#13 楼

Java太复杂了。我做了很多PHP工作,在大多数情况下,它变得越来越容易。仅通过SSH进入服务器即可打开php文件,以保存更改并完成更改的功能非常棒。我从事过的少数Java应用程序总是需要重新启动才能进行最简单的更改。 (并不是说我一直都想这么做)。另外,PHP托管很便宜,并且随时可用。

我还认为,至少与PHP合作的是很多像我这样的开发人员,他们14/15年前就开始使用静态HTML。随着事情的进展,我们开始将PHP添加到我们的站点,因为它简单,简单且价格合理。多年以来,该语言已经发展壮大,其能力已经超出了谦虚的起点,现在努力成为我认为很多事情,实际上并不是。

另一方面,大多数PHP开发人员我知道Java是这种过于复杂的巨型800磅大猩猩,几乎就像从18轮半卡车驶到杂货店并获得一条面包。 ,我的第一印象是那条蜿蜒的路很长,并且诱发了腕管。另外,从入门开始,我还遇到了很多问题,这些问题对于Java资深人士来说似乎很容易。 OpenJDK还是Sun? Tomcat,还是Glassfish,还是?另外,似乎每本Java入门书籍都可以让您开始编写命令行代码。我认为这些天大多数人都发现贪睡节。

评论


与PHP的9000多种内置方法相比,我将有更多选择和更多复杂性。

– Kaleb Brasee
2011年8月19日在2:54

PHP非常容易设置。

– Barfieldmv
2011年8月19日在11:22

但这只会使编写出色的代码变得如此困难……更容易设置,更容易启动,更无聊不是您选择语言的标准。好的编程需要纪律,耐心和努力...如果您在选择时没有这些,那就不好了...

– alex
2011-12-14 22:52

除非他们俩都发臭,否则要建立一个PITA比另一个要大得多。

–埃里克·雷彭(Erik Reppen)
2012年12月7日,下午1:33

#14 楼

我和我的团队目前正在用Java 6 + Stripes开发一个未开发的Web应用程序。在过去的一年中,我还使用Java 6 + Stapler(由Hudson / Jenkins着名的Kawaguchi的Kohsuke Kawaguchi开发的一个鲜为人知的Web框架)开发了另一个未开发的Web应用程序。Java绝对用于现代Web开发。 。当然,它没有Ruby或其他动态语言的“性感”吸引力,但我远不相信一旦项目开始扩展,动态语言就是一件好事。

现代Java应用程序服务器在性能方面与ASP.NET相比非常有竞争力,而且两者都比我所知道的任何动态语言VM快几个数量级。说Java永远是最好的选择(而不是遥不可及!),但它也不总是错误或“过时的”选择。

评论


我倾向于不同意“更快”。从理论上讲应该是这样,但是那里有大量的php站点,几乎所有有关性能问题的轶事都与MySQql或其他基础数据库有关。另一方面,几乎所有我接触过的J2EE应用程序都需要进行广泛的调整,才能使性能令人满意。

–詹姆斯·安德森(James Anderson)
2011年8月19日下午4:23

@James:除了模糊的轶事之外,你还有什么要备份的吗?所有排名前十的网站都可以在托管平台上运行(在Java上运行Amazon,在Scala IIRC上运行Twitter,在Java和C ++的自定义后端上运行Google),或者拥有高度自定义的基础架构(Facebook和Wikipedia使用PHP,他们俩都有大量的自定义本地代码以提高速度)。 Java通常会在基准测试中胜过动态语言。我不是Java狂热者,但是性能不是Java的问题。

–丹尼尔·普赖登(Daniel Pryden)
2011年8月19日下午5:49

Java本身没有性能问题,“不比C快,但比其他任何东西都快”。但是,几乎可以保证J2EE,框架,ORM,依赖项注入以及过大的设计无法执行。隐藏的瓶颈和无法预料的交互作用的潜力太大了

–詹姆斯·安德森(James Anderson)
2011年8月19日在6:36

@Basic:您的意思是?对于任何一种语言,都有很多损坏的库和框架。是的,有很多繁琐而过时的文档-但这也不罕见。相反,有一些很棒的Java库,框架和工具。您是否在认真地建议对每个应用程序都应该有一个端到端框架?

–丹尼尔·普赖登(Daniel Pryden)
2013年3月6日22:00

@Basic:从何而来?自从我第一次写这个答案以来的一年半里,我一直在前进,目前在Google工作。我可以向您保证,Java在Google的Web应用程序开发中被大量使用。当然,Google的需求与许多其他公司的需求截然不同,但是当您使用正确的库和框架时,Java完全是另一种野兽-只需检查一下Google开源的一些东西(Guava,Guice, GWT,协议缓冲区等)。

–丹尼尔·普赖登(Daniel Pryden)
13年3月6日在22:11

#15 楼


与PHP / Python / Ruby相比,Java的学习更为复杂。
Java生态系统非常复杂,庞大,并且对初学者造成困扰。您必须知道避免浪费时间的框架
Java构建工具是复杂的方法(Maven和Ant)
Java没有易于使用的模块系统(OSGI太复杂了)
像Eclipse这样的Java IDE,虽然功能强大且具有令人惊奇的功能,但是如果没有大量经验,就很难进行有效的Web开发。
如果将Tomcat或Jetty以外的任何其他设备用作服务器,那么WebSphere / WebLogic / JBOSS的启动时间长会令您感到沮丧。
Java EE解决了许多人没有的问题,例如分布式交易

进入专业开发的新开发人员会发现Java比Rails,python或php难实现一个数量级,因此它们易于学习。
< br综上所述,我决定使用Java进行启动,因为正确配置的Java开发环境可以非常有效地工作。我的意思是正确配置。


少于10秒的启动时间
正确配置的Eclipse工作区,并整理并配置了所有框架
选择了不错的库(Spring,Spring MVC,Spring Social,Spring Security,JPA,Hibernate,速度等...)
带SSD的快速开发人员机器
Orielly Safari订阅


评论


让我们清楚一点。 Java语言并不难学习。这就是PITA的全部缺陷,它们弥补了Java的缺点(冗长,通过全力以赴而不灵活地保护您自己和您的团队成员,依赖于荒谬的库数量等等),这就是PITA。学习。

–埃里克·雷彭(Erik Reppen)
2012年12月7日在1:24

@ErikReppen非常正确。我必须从事Java项目,但具有.Net背景。语言和语法很简单,就像我所了解的一样。冗长的语气确实让我发疯。我以前在1行中使用的内容现在需要5-10,并且(通常)需要进行XML配置文件编辑。更不用说不花大量时间在阅读上,选择一个“正确的”工作框架是一场噩梦-那是在您发现您的情况被认为是边缘情况,不被支持,如果您不喜欢的话重写它。我想花时间解决大问题

–基本
13年6月6日在17:41

“ Java更复杂”-有人能记住PHP的strpos或in_array的参数顺序吗?而且PHP的XML DOM接口是荒谬的(将属性显示为字符串以检索它们吗?)。 OSGi绝对出色并且与语言无关。

– Jevon
13年5月12日在4:23



@jevon:PHP文档非常好,我的IDE仍然很想提醒我。另外,SimpleXML。

– DanMan
2013年12月12日0:02在

#16 楼

大约5年后,我和一位同事被要求执行一些内部项目的编程任务。一个足够简单的任务,需要命令解析。照着做。不用说,他的代码被选中了。

这让我感到奇怪。到处都赞赏复杂性。 (我曾在最大的软件产品公司之一工作。)Java是首选工具,设​​计模式是编码的方式。

现在,拒绝简单性的是心态还是仅仅是自大。好吧,我一直认为常识应该占上风。无论是企业还是简单的Web应用程序,基本用例都是相同的。它应该是正确且可验证的。

由于多种原因,我不再使用Java。但是其中一个因素-复杂性是大量Java开发人员在开发软件时的普遍心态。

关于扩展动态语言,JVM是数十年来研究的结果。 Ruby等也有很多相同的事情。

Scala是我发现的一种非常聪明和实用的语言。玩!与Scala一样,它对于Web /企业应用程序开发同样出色。

至于Ruby和Rails对于初创企业来说是闪亮的新事物,要聘请一位可靠的Rails开发人员是极其困难的。实际上,这是任何初创企业的障碍,而过多的Java开发人员应该具有更多的商业意义。

评论


我不是Java迷,但是您所指的“复杂性”很可能是抽象的。抽象对于测试和可维护性都非常有用(当适度使用时)。无法比较代码就很难确定

–基本
17年1月8日在13:22

#17 楼

google plus的技术主管Joseph Snarr在最近的一次采访中解释了该应用程序如何在后端使用Java Servlet,在前端使用JavaScript。

因此,回答您的问题Java仍用于非常现代的Web开发中。只是不是对于最近受到如此广泛关注的初创企业而言。

我认为许多初创企业使用其他技术的原因是因为它们更性感,而且其知名度更高。开源推向了他们。

评论


初创企业使用其他技术是因为他们想立即完成它。不晚他们很快就完成了,现在只有3个人,而不是30个人。

–埃里克·雷彭(Erik Reppen)
2012年12月7日,1:17

报价人只能提供他的观点和选择,而不能验证他/她选择的是正确的决定。

–DivKis01
2014年7月22日在5:46

#18 楼

自从您提到了Web开发和Java以来​​,许多人往往会忘记一开始在Web浏览器中使用Java Applet的表现不佳,不仅如此,而且Applet的“沙盒”还没有得到充分开发,并且存在安全性问题。 Java Applet能够在浏览器中运行并访问本地计算机数据(又称为客户端安全问题)。当然,Java在后端和独立应用程序中表现出色,但我认为将Java语言与Java小程序(在浏览器上运行)相关联,这可能会使人们对Java作为Web开发组件的看法更加混乱。我认为他们从未从中恢复过。

评论


绝对不!实际上,Java是服务器端世界中的主导语言。小程序可能在十年前灭绝。

–凯龙
11年8月18日在16:06

Flash做了Applet想要做的事情。快速启动,快速下载,低内存占用。

–user1249
11年8月18日在17:56

我知道很多人甚至无法区分Java和Javascript。即使它们完全无关。这是给Java取坏名声的另一件事。

– Kibbee
2011年8月19日13:37

@Kibbee ...或者它给Javascript一个坏名字:)

–马修·辛克尔(Matthew Schinckel)
2012年6月10日12:36

#19 楼

问题应该是“为什么初创企业或小型项目不使用Java?”。 Java当然用于“现代Web应用程序”。在Google,许多服务的后端都使用Java,前端使用闭包编译的JS或GWT。问题是速度与规模的关系之一。初创企业需要将可行的产品降至最低。他们通常是由1-3名工程师组成的小型团队,他们重视迭代速度而不是性能或可维护性。遇到可伸缩性问题或团队代码维护问题是“您希望拥有的”问题,也就是说,当您到达该阶段时,这是您的最初实施帮助您克服了最初吸引客户或客户的麻烦的迹象。投资。您可以在那时重写应用程序。

像Google这样的公司可以负担得起预先构建事物的奢侈,尽管他们可能会浪费时间实施可能会得到扩展的事物没有用户,因为他们可以吸收损失。简单是最大的要求。

评论


您的消息来源在哪里说明创业公司不使用Java?请用一些事实来支持您的假设。

–沃尔特
2012年10月20日16:20

#20 楼

Java上的传统Web应用程序虽然结构良好,但与“快速开发”相距甚远。尽管我只编写了一个完整的Web应用程序(Java / Tomcat / Struts),但是它非常挑剔,调试所花费的时间比预期的要长,并且在实现业务逻辑层时通常很痛苦。在Java的潜在防御中,这是我用Java编写的唯一Web应用程序(尽管我习惯于用Java对系统级应用程序进行编程),而且我相信第二遍可以更快地编写另一个Web应用程序。 />
话虽如此,我也已经用PHP和C#编写了应用程序,它们工作得更好,并且比Java宽容得多。不仅如此,Ruby on Rails专为快速应用程序开发而编写,就像Robbie所说的那样,它允许对数据库的轻松CRUD访问。问题在于,您将自己开发的大多数网站都不需要Java提供的自定义级别(并且不需要您执行)。此外,每个数据库连接对象都必须手工编写,并且很难模板化。周围可能会有更好的框架,尤其是可以利用Java 7的新动态语言支持功能的框架,但是我尚未进行研究。

评论


您应该看一下Play Framework,它是一个Java Web框架,可让您使用Java高效工作,并且受到Ruby on Rails的启发。

–乔纳斯(Jonas)
11年8月18日在15:41

@Jonas,请考虑撰写一些简短的博客文章,以简洁地说明所有这些。

–user1249
11年8月18日在17:01

@乔纳斯Thorbjorn说了什么!我会仔细阅读。 :)

–布赖恩
11年8月18日在17:16

@Thorbjørn:我没有博客。简而言之:使用Play Framework,您只需保存Java源代码,然后更新Web浏览器。该代码是使用Eclipse编译器在服务器端自动编译的。 JPA用于数据库访问。这是有关它的文章播放!框架可用性

–乔纳斯(Jonas)
11年8月18日在17:36

@Thorbjørn&Brian:请看播放框架网站首页上的视频,我会很好地解释它。

–伯克·弗洛伊德·汉森(Bjarke Freund-Hansen)
2011年8月19日在6:52

#21 楼

简单的答案:学习提高基本生产力的曲线。

像RoR这样的基于框架的系统倾向于将“魔术”置于语言/语法中。增强基本的RoR语法并启动和运行应用程序非常容易。

Java首先是一种语言,后来出现了工具和框架。因此,您必须先学习Java,然后再学习Spring或Grails或您的超级IDE或其他任何东西。最喜欢的Ruby示例,它不需要setter和getter。事实是,Java IDE也摆脱了手动编码...但是仍然在您的源代码中。这种方法的好处是,在框架下,有一种语言可以与所有Java开发人员一起使用。

对于时间至关重要的小型初创公司来说,这种好处是可疑的。通常,他们所做的几乎是开箱即用的框架所无法完成的。因此,他们可以选择自己的RAD系统,并在第二天上线应用程序。

但是,如果您看看Facebook和Twitter,随着他们的发展,他们发现无法解决的事情框式框架,因此他们不得不使用较低级的技术。

框架开发人员认为他们可以更快地完成任何事情的这场圣战是虚假的,他们可以做很多他们需要的更简单,更少事学习曲线。对于很多事情来说,这已经足够了。使用正确的问题。

#22 楼

取决于您如何定义“现代Web应用程序开发”。如果您正在谈论启动,快速周转的网站,则需要考虑为此目的设计的语言和框架。如果您正在寻找稳定,可扩展的企业级Web开发,则需要支持这些理想的语言和框架。在我的书中,这是两个非常不同的目标。 RoR,Groovy等对于第一个是好的,而Java通常更适合后者。

#23 楼

Google App Engine支持Java,因此您可以使用Eclipse作为IDE和部署界面以及合理记录的Google API以Java编写整个Web应用程序-所以我不会说它未被使用或未被使用可用。

#24 楼

在初创公司工作时,我们选择使用Java和JRuby来实现我们的API,因为它们彼此互补。

对于基础架构,流程分配和通信,我们利用Java的强大功能,而对于Java的实际实现API端点之所以选择JRuby,是因为所有调用都涉及JSON,并且使用松散型语言(Ruby)处理松散型表示(JSON)更为有意义。我们的一个JRuby类正在成为瓶颈,我们只是直接在Java中重新实现它(基本上是逐行翻译)。在必须进行大量计算的类中,这种情况经常发生。在这种情况下,JRuby的行为很像原型语言。

我们实现了自己的动态类加载器,这意味着我们可以在Java类上进行更改。无需重新启动服务器即可运行,我们对此选择感到非常满意。因此,“每次都需要编译并重新启动”参数不太重要。 >

#25 楼

我仍然有很多Web开发都使用Java的感觉。但这通常是基于面向业务而非主要是技术大公司的开发,与那些需要吸引一些人并推广自己的工作以及对技术更感兴趣的新创业公司相比,它们通常不那么开放。因此,即使在很多公司网站中都使用了它,您也可能永远不会知道,因为他们并不愿意公开谈论其技术堆栈。

原始问题...

这是该语言的弱点吗?
与其他语言(如Python或Ruby)相比,Java冗长,并且往往需要更多代码来完成类似工作。但这不仅是语言的功能,还包括语言的社区以及使用这些工具的开发人员的类型。
因此,Python,Ruby,PHP等上的大多数模块和工具都是开源的,比Java世界中更容易找到,只是因为这更专注于提供(和收费)服务。 />例如,Ruby社区确实真正面向Web开发,因此每个能够使用Ruby的开发人员都将了解Web项目的问题和可用工具。对于Java开发人员来说并不一定如此,因为Java开发人员可能已经在其他类型的系统上工作,例如报告系统。当然,任何优秀的开发人员都会追赶上来,但是人们普遍认为Java开发人员不太会担心学习新技术和新语言。长时间(它与其较旧的技术存在不公平的关联,并且因其“现代”功能而没有得到认可)?
Java并不是真的那么老,并且公平地说,它已经有了很大的改进。大约10年前,这是一个很酷的相关平台。但是从那时起,出现了一些新的平台,其中就考虑到了新的问题,例如Ruby on Rails。 Java的核心部门主要是公司领域,存在不同的问题,因此人们在寻找新工具之外寻找新工具的人们。
而且,Java设计的主要优势是多平台,如今已不像以前那样重要了。

Java开发人员的负面刻板印象是否太强了? (Java不再是“酷”了)
里面也有一些道理。 Java仍然是学习“找工作”的语言。因此,如果您不在乎,而只是想学习一些赚钱的方法,您将结束对Java的学习,而不再关心改善。
同样,关于感知和可见性也很多。有很多伟大的Java开发人员在编写代码时却没有分享他们的知识,而很多PHP开发人员(可能不那么出色)正在编写博客并将其协作成开源程序。导致您认为PHP开发人员比Java开发人员更好,因为您对它们有一定的反馈。

用其他语言编写的应用程序真的可以更快地构建,更易于维护并且性能更好吗?我会说它们的建造速度更快。 PHP,Python或Ruby之类的语言原理使其非常适合生成可以不断变化的软件。例如。动态类型使更改界面更加容易。在Java中,具有良好定义的接口很重要,这将导致更稳定(且难以更改)的接口。
这对于新成立的公司非常重要,主要的问题是在用完钱之前先获得产品。
关于性能,很容易误解需求,并尝试使用魔术技巧来达到所需的性能,例如“ Java比Ruby。Period更快”或“ MongoDB是Web规模”。现实比困难要大。

Java是否仅由太慢而无法适应新语言的大公司使用? ,使在新项目中继续使用相同的语言变得更加容易。这被认为是“安全的赌注”,特别是在公司的核心不是技术的情况下。
但是,无论如何,Java并非仅用于大公司,仍然有很多创业公司使用Java来制作有趣的东西(例如,FightMyMonster或Swrve广泛使用Java),在启动场景中的趋势是使用其他语言。
这也是一种吸引人的方法,因为大多数人使用Ruby,Python或PHP会比使用Java更令人兴奋,被认为是“友好”和“有趣”的语言。

#26 楼

的确如此,但这并不是因为Java及其生态系统。正是由于人们的原因,使用Java时往往会造成大混乱和沉重的可憎之处。人们对系统进行过度工程设计的事实是人们在使用Java生态系统时获得的知识增加的问题-您知道更多的东西,并且可以使用它们(所有工具都有),并且“一切看起来像钉子”。

如果您是“ hacky”,那么使用Java可以完成与其他语言几乎相同的工作,这是一项研究表明:

对49位程序员的研究:静态类型系统对开发时间没有影响... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf

#27 楼

要说的只是一点点,我认为这很大程度上取决于您从无到有(从字面上)到功能正常的Web应用程序的速度。这是一个主意,无论您选择托管服务提供商还是自己的基础架构(例如EC2映像),从现在开始编写Web应用程序几乎就像崩溃一样容易。以我的经验,选择Java通常会花费更多的精力,而且通常也会花费更多。

此外,如果您使用Linux和PHP / Python / Ruby,这些工具和平台是免费的,旨在互相支持。使用Java时,有时似乎两个世界(OS和Java)有时似乎无法相互协调工作。

评论


学习曲线绝对垂直。您将花前几周的时间来弄清楚首字母缩写词是什么,这些标准如何与它们的实现相关联,如何将所有内容分层等等。然后,接下来的几周将弄清楚要使用哪种库和框架。然后在接下来的几周内报告其中的错误...

–克雷格·林格(Craig Ringer)
2012年6月11日的1:33

#28 楼

谁说不是?

Spring MVC + Spring Data JPA或Mongo + Thymeleaf用于模板制作+ Coffee-Maven-plugin用于将Coffee转换为JS,您很高兴。

评论


我完全同意你+1

– Arshad Ali
16年6月22日在4:14

#29 楼

许多人可能将Java和Web应用程序开发与J2EE的恐怖联系在一起,J2EE与来自大型蓝色和红色公司的庞大J2EE应用服务器捆绑在一起,相当于在基本的“ Hello World”上线之前需要花费数周的时间。的确,最近的JEE规范和实现的重量较轻,但是在为短期快速开发项目提出类似建议之前,我仍然会考虑三次。 Java中的应用程序开发。替代方案(在其他答案中提到了许多替代方案)传达了更加混乱和令人困惑的画面,并且做出了太多选择。

其他语言描绘了一个单一的交钥匙解决方案,而不是那么多。当您有更多重要的鱼要油炸时,这使得此选择似乎更适合于目的。

评论


Java EE 6可能是“轻量级的”(JSF2除外),但是它仍然是一个难以置信的巨大学习曲线,一大堆复杂的规范以及非常复杂的分层系统。也许轻巧,但肯定不简单。

–克雷格·林格(Craig Ringer)
2012年6月11日的1:35

#30 楼

我认为它的使用量比您想像的要多-该用途就在水线以下。在浓密的,花哨的Java服务周围的导轨包装上有很多红宝石。特别是当您开始处理任何接近大数据的事物时。 。 。