Java在5年后还会有用吗?[关闭]


41

Java是否会具有与过去相同的重要性,或者与现在相比不再那么重要了?


4
Java将始终与编程行业保持联系。您如何建议我们不写任何东西呢?;)
降低

7
语言还是平台?
MIA 2010年

@Jim:很好,将Java语言和JVM的未来脱钩了。
azheglov 2010年


1
我们不再做“展望未来并预测会发生什么”这类问题。
亚当李尔

Answers:


30

Java具有重要意义,并且在企业计算世界中将继续保持重要地位。

它是否在其他领域仍然有意义,很大程度上取决于Oracle的工作。如果他们为ME,桌面应用程序和其他领域注入一些生命(和资源),并且坚持Java语言的发展,那么Java将会做得很好。

但是,如果甲骨文削减研发和/或试图扼杀Java领域的其他参与者,那么某人/某家公司很有可能会开发出一种更好(和更开放)的类似Java的语言。如果甲骨文在与Google的诉讼中胜诉,我预计下一代Android平台将拥有一种新语言,就像C#一样。如果Google正确地实现了开放性...那么,游戏就开始了!


1
同意。Oracle本身已经将太多的企业应用程序堆栈投资到Java中,以使其无法使用。有趣的是,许多其他答案似乎都集中在移动平台上。
加里2010年

10
IBM在所有主要平台上都支持Java。这意味着即使Java应该从地球的表面消失,它仍将在大型机上运行(例如COBOL)。程序员的主要优势是本地开发的能力以及JVM的严格性意味着它将以可预测的方式运行。

尤其是+1,请I predict that the next generation of the Android platform will have a new language, just like happened with C#.不要忘记Gosling现在可以在Google上使用;nighthacks.com/roller/jag/entry/next_step_on_the_road
Qwerky 2011年

@Qwerky他现在为Liquid Robotics工作。nighthacks.com/roller/jag/entry/i_ve_moved_again

我们不要忘记Borland对Delphi所做的事情。它是如此的荒废,以至于当今大多数人都认为Delphi是一种垂死的业务解决方案。但是Embarcadero救出了该产品,现在可以在Java,Mac,html5,android和其他编程区域使用。
Please_Dont_Bully_Me_SO_Lords

47

是的,Java肯定会继续发挥作用,并且很可能会长期保持其作为软件开发整体排名第一的位置。

首先,Java之所以成为并且将继续成为强大选择的原因:

  • Java仍然是最受欢迎的语言 -这意味着它拥有最多的开发人员,大多数正在进行的开发,最大的安装基础等。没有任何急剧下降的迹象-例如,如果您查看TIOBE趋势,它很可能会继续未来10-15年排名第一

  • 尽管有缺陷,Java仍然是开发企业应用程序的优秀语言。当需要许多不同的开发人员以相当标准化的方式维护应用程序时,它冗长且倾向于促进相当标准化的OOP开发风格这一事实是一件好事。聪明的CIO意识到了这一点,这就是为什么您不会很快看到Java在企业中消失的原因。顺便说一句,Java创建时的明确目标是应该“简单,面向对象和熟悉”。

  • 语言的成功不仅与语言本身有关,还与语言可用的图书馆生态系统有关。在这方面,Java是首屈一指的,它拥有大量的开源和商业库。

  • 性能 -现代JVM上的JIT编译代码在速度方面非常接近优化的本机代码。实际上,这意味着Java通常是可用的最快的语言/实现组合之一(如果愿意,请参见有缺陷的基准测试)。任何认为Java速度慢(或出于善意的原因而“解释”)的人都需要更新上个世纪的事实。

  • 大型公司的支持 -Java是由许多世界上最大,最重要的技术公司和组织支持的战略平台-我们谈论的是Google,Oracle,IBM,Apache Software Federation等。Java还获得了主要技术用户的大力支持-银行,媒体公司等。没有其他语言/平台具有如此广泛的行业支持(即使播放器偶尔会出现:-))

  • Android-在移动领域极大地促进了Java的发展。许多初创公司都瞄准了这一点,并且可以预料,移动初创公司也将有充分的理由在服务器端选择Java。

  • 可移植性:Java是最接近真正的跨平台编程环境的东西。从高端服务器到智能手机,它都应运而生,并且编译后的纯Java代码在所有这些平台上运行而无需修改。很少有语言能说出同样程度的可信度。作为字节码语言,Java在库空间中也具有固有的优势,因为编译的库具有跨平台的固有可移植性。

  • 优秀的工具 -其中大多数是免费和/或开源的。NetbeansEclipse是IDE领域中的出色示例。开发人员需要良好的工具来充分发挥生产力,因此这是选择语言/平台的重要因素。

  • Java是开放源代码 -这里不讨论为什么这是一件好事,但足以说明a)OpenJDK中的核心Java实现以及b)大多数有趣的Java库和工具都是开放源代码。

  • Java 不仅是一种语言,它还是一个平台JVM上有许多有前途的语言,例如ClojureScala,它们代表了该语言在平台上的未来。我的预测是,Java语言将继续获得对功能(JDK 7、8等)的较小增强,而这些新的JVM语言将在这些语言中进行前沿创新。但这都是Java平台的一部分。

其次,如何替换Java?让我们看一下其他竞争者:

  • C / C ++-在系统编程和高度优化的本机代码要求(例如游戏)方面将继续发挥重要作用。但这将继续是一个专门的领域,并且永远不会超越Java,后者更适合于通用应用程序开发。
  • Microsoft.NET-C#当然是一种不错的语言(本质上是经过改进/抛光的Java克隆),但是整个.NET平台代表了供应商对Microsoft软件堆栈的锁定。过去,许多人绝不会采用这种特定于供应商的策略。尽管Mono是一个不错的开源项目,但它永远不会完全兼容,因此大多数企业不会选择这样做。.NET / C#在Windows空间中将继续非常重要,但无法整体取代Java。
  • Objective-C-毫无疑问将继续在苹果特定的开发中占据主要位置,但在该领域之外可能不会有太大的吸引力。此外,由于Android,Java在移动领域也有非常引人入胜的故事
  • Python,Ruby-再次是不错的语言,它们的利基率很高。但是就性能,行业接受度或库范围而言,JVM远远不及JVM。肯定会继续取得成功,但他们并没有成为Java的杀手ers。
  • JavaScript-在客户端Web开发中将继续发挥重要作用。但是在这个领域之外,没有任何真正的实力可能会很快威胁到Java。
  • Haskell,OCaml(以及其他各种学术/ FP语言)-很棒的语言,但是在Java所支持的库中却遥遥无期,因此在实际使用中并不特别实用。此外,与诸如Clojure或Scala(可以轻松使用Java库)之类的JVM语言相比,它没有提供任何引人注目的优势。
  • Clojure或Scala-从中长期来看,确实很引人注目。实际上可能会在10到15年内取代Java,但是由于它们都是JVM语言,因此无论如何它们实际上都可以算作Java平台的一部分。因此,Java投资将是安全的。
  • 神秘的未知新语言?-可能会发生,但是历史表明,无论一种语言多么引人注目,开发牵引力,开发人员学习新技能,公司投入大量资金等都需要很长时间。

最后,一些结论/预测:

  • 在接下来的几年中,主要语言的整体相对位置(就市场份额而言)将有所变化,但不会有太大变化。Java将保持第一。

  • 在接下来的10-15年中,选择Java平台不会出错。不用担心Java很快就会消失。

  • 在短期内,Java语言是一种安全可靠的选择。从长远来看,或者如果您觉得需要更多创新/语言设计的前沿,我建议将Clojure或Scala作为新的JVM语言

  • 人们将继续传播有关Java的FUD。只是忽略它。


2
伟大的职位,谁使用的是像Ruby和Python语言的人认为他们的语言是有史以来最好的事情,但现实情况是,对于大型密集型应用程序的动态语言是不会削减它
programmx10

4
这不是最早的回应,但到目前为止是2011年中期以来最详尽,最有说服力的回应,因此应作为首要的回答。+1
limist 2011年

@ programmx10:动态语言中的开销是否比Spring等Java框架中的开销大?
凯文·克莱恩

@Kevin:Spring通常仅用于应用程序配置,因此成本并不可怕。OTOH,如果还用于实际计算和IO服务,则它的速度大约是动态语言的速度。关键在于,基于Spring的应用程序实际上是部分脚本编写的 —实际上这是一个很好的地方—但是我们不会告诉老板,因为他们喜欢绝对必须编译所有东西。
Donal Fellows,

1
好帖子。您在此频谱图中的哪里看到Go或Dart?
Paul Tomblin,2012年

17

即使在最坏(最好的情况)下,我也无法想象Java在5年之内变得无关紧要。Java已经足够使用,它与COBOL,Fortran等的情况大致相同。即使每个拥有现有代码的人都决定尽快以另一种语言重写所有现有系统,但要花5年以上的时间才能完成。更换所有设备(从现在开始的5年后,仍将有足够的有效使用空间,因此仍会进行大量维护)。

实际上,这不太可能发生-尽管甲骨文肯定有不同的看法,但我无法想象他们所做的任何事情都如此可怕,以至于所有在Java上进行了大量投资的主要参与者都将很快放弃它。老实说,在IBM(例如)甚至考虑使用Java替代品之前,可能要花费近5年的明显错误决定。他们在Java上有足够的投资,因此除非他们相信他们别无选择,否则他们不太可能放弃Java。


+1用于连接到COBOL。有人说,由于Java充当了现代COBOL,Oracle拥有它是合适的。
Macneil

17

我会说它正在下降。它没有消失,但是已经超过了高峰。


13
资源?(15个字符)
TheLQ'9

13
@Kop- “这是用于主观意见的 stackexchange 网站”。那是在错误陈述本网站的目的。主观意见尚可,但客观事实显然更有价值。质疑任何主观陈述以寻求可能的客观支持证据是合法的。
斯蒂芬·C

12
@Lorenzo在过去的十年中,Java已经成为主流,并且可能是工业和教育中使用最广泛的编程语言。我同意Fishtoaster的观点,它现在正在下降,这主要是由于Java 7缺乏方向和进展,以及程序员拒绝重量级的JavaEE解决方案,而希望使用其他语言的更轻便的替代方案。
Dan Dyer 2010年

17
我不知道我是否同意这个简短的答案,但是15次投票只是表明我必须停止在这个动物园里闲逛。这个答案没有理由,也没有引用。哪个是“来源”?可能意味着。我不在乎意见,但是“ Java死了!” 或“ Java还不错!” 都对我完全无能为力。+0。
Dan Rosenstark 2010年

5
-1:此答案中没有事实或论据。主观的!=随机的不受支持的断言
mikera 2011年

17

两个答案:

1)Android

2)黑莓

严重的是,在台式机上,它可能正在下降,但它为iPhone的两个竞争对手提供了动力。

另外,去年,我用学校的Java作业帮助了很多人。重点是,java仍在大学里教授。

编辑:

截至2011年10月,黑莓手机似乎正在下降。Android仍然表现强劲。


Whatberry?他们还在吗?他们到2000年代就像Palm到90年代一样……:)
阿道夫·大蒜

@adolf大蒜-那又怎样,它们还没有卖给HP;)这就是为什么无论如何都有两个答案。Android到2010年代就像iPhone到90年代一样。Android还没有到衰落阶段。
Moshe

8
它在桌面上从来没有那么重要。Java开发的主要内容是在后端OLTP市场上。
luis.espinal 2010年

@ Luis.espinal-我正在将服务器分组,一组在桌面,另一组在移动。
Moshe

@ luis.espinal,+1
纳季·

14

它在移动市场上的重要性正在下降,但是有了Android,它又重新获得了它。


1
如果sl4a完成,则Android效果可能会短暂存在。sl4a的最终目标是允许人们以任何编程语言编写适用于Android的应用程序。而且,像Appcellerator这样的跨平台工具包至少部分地不需要学习用于Android开发的Java。
Chinmay Kanchi 2010年

3
由于性能方面的考虑,sl4a需要很长时间才能用于一般开发。对于高质量应用程序,我仍然没有出售跨平台工具包。对于快速/有限的资源,请确保
Casebash 2010年

哪些性能问题?Python版本是本机CPython,所有API均通过Dalvik网桥(IIRC)调用。因此,在没有JIT的情况下,它的性能应与“本机” Dalvik代码几乎一样。Android 2.2确实具有JIT,但是到那时,没有理由不再使用Jython,因为它会比CPython更快,并且不会比Java慢很多。
Chinmay Kanchi 2010年

+1鼓舞@Chinmay Kanchi的评论。不知道sl4a真有趣。
Dan Rosenstark 2010年

13

Java将在可预见的将来具有相关性,即使您将相关性定义为仅包括新代码,也不包括旧版维护模式。是的,这种语言像调皮的孩子一样吮吸和对待程序员,而不是像成年人那样同意,并且自石器时代以来就没有改头换面。另一方面:

  1. Java有一些很棒的库。

  2. JVM是一个了不起的平台。

  3. 现在,有了JVM语言的泛滥,您不必使用Java进行编程就可以使用这些库。

恕我直言,事情发展的方式是,JVM世界中的Java将成为本地编译世界中的C。人们将在日常编码中使用Scala,Jython,Groovy等,但它们将永远从这些语言中调用旧的,笨拙的Java代码。某些对性能至关重要的代码可能仍是用Java编写的,因为它可能是最低级别,最有效的JVM语言。旧库将需要添加新功能。因此,即使普通程序员每天不使用Java,Java也将保持高度相关性。


当您说Java会成为一种母语时,这让我感到很老。叹息
Dheeraj Bhaskar

7

我认同。我预计,随着插件7的最新改进和Java 7中语法的增强,它的流行度将在未来几年内增加。它具有大量优秀的开源库的优势(与之相比, (.NET),可以轻松将其存活10年。


4
Java 7拒绝了许多最好的主意
Casebash 2010年

1
@Casebash:那是那些?
克里斯,2010年

5

目前Qt正在杀死桌面应用程序中的Java。有许多从Java重写到Qt的程序。目前我正在研究其中之一。自从我开始从事编程工作的那一天起,总是有谣言说Something将杀死C ++。对于前。Visual Basic,Java,C#,但实际上C ++仍在发展。它有很多缺点,但仍在继续。所有其他竞争者都伤心欲绝......


4

我认为这不会失去相关性。Java 7刚刚推出了许多简洁的功能,它们将帮助开发人员更轻松地创建出色的软件。

Java也用于创建Blackberry应用程序。领先的企业手机之一。可以肯定地说它不会很快消失。


并为Android
增添

我今年去了Java One。即将出现的一些很棒的事情:支持自动使用多个内核,自动卸载到GPU和自动卸载到CPU的向量单元将使Java成为一个非常高效的平台。所有编写“新”惯用Java的Java程序员都将免费获得它。有些聪明的家伙从Oracle得到了一些钱,使Java变得更好。Lambda项目将提供闭包,并且以一种可行的方式进行并且完全向后兼容,而不会造成任何麻烦。SAM转换很困难。好事来了。
Tim Williscroft

4

我主要是.NET开发人员,尽管我确实需要使用其他语言(包括Java)来完成任务。因此,根据我自己使用该语言的经验,我认为它不会很快消失,原因如下:

  1. 当前的安装基础 -那里有足够的程序需要长期支持,这是新开发人员学习该语言的理由。
  2. 在学术环境中使用 -大多数大学都将其作为入门语言之一来教授OOP和其他基本概念,这意味着将有越来越多的新开发人员毕业并进入他们熟悉该语言的劳动力开始吧。
  3. 它的跨平台性 -一个明显的,但事实上,它是跨平台是一个大问题,更是让作为对Java的支持新设备的智能手机。仅需维护一个代码库,但能够为多个平台部署(即出售)应用程序的前景将有些困难。您能想象iOS和Droid是否都支持用Java编写的应用程序吗?
  4. 没有强大的竞争对手 -目前,我无法说出我认为是Java强大竞争对手的语言。当然,由于Mono,C#开始在更多平台上出现,但这与Java具有相同的跨平台并不完全相同。当然,有许多语言可以执行Java的工作(在某些情况下更好),它们倾向于根据自己的工作进行定制,对于某些大型项目,如果要维护大量的语言是没有道理的可以接受Java可能带来的任何性能下降。

4

Java 语言可能正在缓慢下降,但是Java 平台(JVM + JDK)在最近几年中一直在蓬勃发展(Scala,Clojure和许多其他语言; Android框架)。毫无疑问,它是目前最好的(仅可行的?)多体系结构,多操作系统,多语言平台,可以从嵌入式移动设备扩展到大型机企业,并且目前还没有可比的竞争对手AFAIK。因此,我希望Java平台在5年甚至15年内都具有实用性。从长远来看,这也使Java成为一种与之相关的语言,即使Java的普及程度可能已超过顶峰。


4

TIOBE评估语言使用的情况... http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

根据他们的统计数据,Java会带路,并且很可能会持续很长时间-自2005年以来排名第一。我在职业生涯中一直使用Java,在我曾经工作过的任何地方都有Java应用程序/开发人员-即使是在考虑过自己的地方Microsoft开发商店。当您必须在Mac或Linux Server上开发解决方案时,Java就是一种易于使用的语言。

同样,优秀的ole C / C ++仍然在#2和#3上保持强势-而C#(每个人都认为它是最受欢迎的语言(最好的MS营销))甚至还差强人意!我现在使用C#,但要花费相当于我用Java和Delphi编写的代码量所需的时间。

因此,不要害怕学习或使用Java-总是为他们发布工作。因此,是的,Java在很长的一段时间内将非常重要。


Tiobe评分...互联网上以tiobe搜寻方式谈论某种语言的人数。blog.timbunce.org/2008/04/12/…–
肖恩·麦克米兰

3

它是企业编程(J2EE)中最著名的名字之一。我敢肯定,未来几年我们不会看到它下降。


3

不确定JAVA。但是,可以肯定的是,JVM将保持相关性,支持许多其他语言。


3

这取决于语言的发展方式。

目前,Java作为语言不是很活跃。它的诞生是为了支持一种(也只有一种)范式:OOP。它将自身放置在允许更高级别抽象的语言(如C ++及其元编程功能)和具有反射功能的脚本语言(如Python的“ exec”和“ dir”命令)之间的中间位置,但是以某种方式无法找到真正的位置。它基本上已不再是“语言”。我不认为这是移动设备上的事实上的标准,我认为它现在已经死了。

至于对于OOP来说这是一种很好的教学语言这一事实​​,我从我的见解中感到怀疑:所有出生于Java的程序员都随处产生了Visitor和Observer模式,但这并不是我对Java程序员有丰富的经验。

仍然有很多遗留代码,在移动设备上这是一个标准。那就是说,我永远不会为台式机或Web应用程序选择Java。除了业务部门之外,没有理由(大多数经理都点头说“ Java”,也就是说,我认为这是移动设备上的标准)。


有人记得SUN有人说“不需要Java”枚举吗?C#/ VB.NET具有枚举,后来又添加到Java中
umlcat 2011年

1
它广泛用于大型应用程序,请确保“编码器”,“脚本”和“ ROR忍者”不喜欢它,但是那是因为它是一种真正的编程语言,并且用于构建功能远远超过CRUD的应用程序如果您需要在应用程序的服务器端进行大量密集的操作,那么应用程序就会这样做。在您不得不使用C ++或其他较低级语言之前,Java通常是最有吸引力的选择
programmx10

3

恕我直言,即使Java的构造或功能没有真正发展,Java仍将保持非常重要的地位并不断使用。

这是我的理由:-那里有很多代码,与编写新代码相比,维护所需的人员更多。

  • “ VM语言太慢”阵营正在慢慢消失(特别是随着Java成功地将其纳入算法交易中)。

  • 大公司仍然在包括Oracle在内的所有领域使用它。

  • android平台的增长速度比iOS快,没有其他竞争对手在眼前,这确实吸引了更多人加入。

  • 对于人们而言,使用它比使用功能语言更为直接。语言纯粹主义者和学者很容易欣赏功能语言及其功能,但是大多数没有CS学位的新手并没有完全欣赏Lambda的功能。因此,我认为这些语言不会普及。

  • 它是完全免费的(与.NET不同,尽管有其他选择,.NET仍然更接近Windows生态系统)。


2

Java不会在很多年后完全失去其相关性,但是它肯定正在下降。如果最近的事态发展会影响到这一点,或者Oracle是否可以改变,那还有待观察。但是我确实认为,有一天我可能会像COBOL,没有新项目,但从没有死。


2

COBOL,Fortran和C仍然相关。Java在五年内消失的机会有多大?可以想象,五年之内不会有太多新的Java开发,但我也要反对这一点,因为有很多人在使用Java,而商店在转换他们喜欢的语言时也很慢。


1

我怀疑所有语言最终都会进入一个阶段,专家们会说“ [语言]是[在这里插入十年]的COBOL”。

Java已成为许多软件开发领域中的一种专用或主要工具之一的标准工具。它的VM作为构建新语言的平台而流行。就算是新的更好的语言变得流行,距离其巨大的惯性也将持续很长时间。


但是,Java确实成为了COBOL,大型机,服务器应用程序
umlcat 2011年

1

Java世界出现了一些趋势,尤其是绝对出色地采用了JRuby和Rails或Groovy和Grails的趋势,这表明Java仍然有很多生命。然后就是Android的情况,这也对Java有利。就像Mac上的Snow Leopard一样,某些更改(现在无需外部驱动程序即可支持Midi)也已实现,因此它在台式机上的应用也越来越多。而且,Swing应用程序最终看起来本机为99%(或者至少现在有很多坚果壳相信这一点:十年前还没有)。

在90年代,Java经历了一个令人赞叹的时刻,这似乎是所有事物的解决方案。现在很明显,没有什么可以解决所有问题。.Net正在发挥作用,还有Ruby,Python,PHP(带有愚蠢的CMS解决方案以及人们终生都会嫁给的整个框架!)和Java(带有Groovy JRuby JPython等等)。答案是:

期待一个多元化的宇宙

Java会在这个宇宙中继续扮演重要角色吗?如果您的意思是“在JVM上运行的语言”,那么答案肯定是肯定的。如果答案仅仅是Java(语言,JVM等),那么答案是“也许不是那么重要”。但是,来吧,即使是Cobol仍在徘徊。


1

我认为学术界仍然需要JAVA中开源的价值。在JAVA上开发了许多强大的库(专注于学术目的)。

我同意JAVA仍将保持相关性,但对于较小的部分。


1

Google用Java编写了大量文章,而Google是网络上最大的公司。我认为Web是Web应用程序,云计算的未来,因此我认为Java在未来仍然很重要。

还有Android,我认为这是智能手机的未来。有人说智能手机是计算机的未来-我不认为这是:)-但是谁能给Java带来巨大的未来。所以去Java:D


其次,谷歌正在将其许多内部工具和库(例如GWT,Guava等)推向社区,因此,它的影响范围不仅仅在于使用它的X工程师。
乌里(Uri)

0

如果它绑定到某个行业(例如银行,移动平台等),那就像在5年前问“ Internet Explorer在5年后还会有用吗?”。如今,许多公司拥有IE专用的内部网站,这些网站无法从头开始重写。因此,它不是“相关的”而是“不可避免的”。

提出您的问题-不,它与创新的推动力无关。但是是的,这很重要,因为许多行业将要求Java应用程序要保持很多年。


0

这是ReadWriteEnterprise上有关Java下降的文章:

http://www.readwriteweb.com/enterprise/2011/02/javas-not-dying-its-mutating.php

我们目睹的不是Java的消亡,而是Java的变革。它已从仅是主导企业的通用平台转变为针对各种特殊应用的许多不同技术的胆量。

它还讨论了特定工具如何提供Java技术的替代品,但不一定替代它:

尽管NoSQL数据库提供了关系数据库的替代方法,但这并不意味着关系数据库将消失。同样,Node.js提供了Apache的专用替代方案,但不会终止Apache。


来自同一站点上工作的发展趋势显示了一篇文章,Java的仍然比其他任何语言更多的工作列表: readwriteweb.com/enterprise/2011/05/...
布里特韦斯科特
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.