什么语言可以替代Java?

时间:2010-08-17 19:35:31

标签: java python qt programming-languages replace

我可能会发布一个过早的问题,也许我只是无缘无故地吓坏了,但Oracle处理Java的方式并不是很有希望。我是一个从一见钟情就爱上了Java的书呆子,并且一直在我的个人/自由职业项目中使用它,但现在我正在考虑替换它。

我也熟练使用C#/ VB.NET,但我正在寻找更像的东西:

  1. 开源
  2. 编译
  3. 跨平台
  4. 面向对象
  5. 大型标准库
  6. 广泛的文档
  7. Web开发是一个主要的优点
  8. 我正在考虑妥协:用于Web开发(或PHP)的Python / Django,以及用于胖客户端开发的Qt。谁有更好的想法?

10 个答案:

答案 0 :(得分:14)

不久前,我决定远离JVM。我踏上了蟒蛇,即使我不在专家/大师级别,我也不后悔。没有选择C#(考虑它)因为我认为它更相同。我已经知道(并且很多)C ++,所以python似乎是新的东西,这就是我想要的。

它满足了您的许多要求。特别是,我决定不学习PHP,因此python中的Web框架非常出色。

更不用说,Python有一个很大的community(也见here),总是渴望帮助和教学,我认为这非常重要。

只是我的两分钱。

答案 1 :(得分:6)

可能值得使用其他JVM语言 - Clojure和Scala是我个人认为最有希望的两种语言。

是的,你在JVM上,但你完全独立于Java语言,如果你不愿意,不必使用任何Sun / Oracle实现。

话虽如此 - 我认为你对Java过分担心,太多的玩家(包括甲骨文!)投入太多资金让它离得太远了。

答案 2 :(得分:3)

试试Scala。它看起来非常优雅和有前途。面向对象并以非常简洁的方式与java共享。

答案 3 :(得分:2)

你所说的一切都指向C#,除了开源点。

要解决此问题,请Mono

答案 4 :(得分:2)

你可以尝试D.我的一句话描述为什么它是一个很棒的语言是它的通用编程/编译时内省/模板元编程设施足以让你几乎灵活的鸭类语言,而它执行速度和静态类型检查可以竞争或超过C ++和C#。

我认为它很符合您的要求。

  • 开源:参考DMD实现的前端是开源的(后端不是由于作者控制之外的限制)。正在开展工作,将参考前端粘合到开源后端,如LLVM(LDC)和GCC(GDC)。对于D1(该语言的旧版本),LLVM端口相当成熟。
  • 已编译:D表示要编译为本机机器代码,即原始的,不可理解的十六进制数字。
  • 跨平台:参考DMD编译器支持x86 Windows,Linux,Mac OS X和FreeBSD。 GDC和LDC可能会支持更多的CPU架构。
  • 面向对象:在Ruby的意义上,D不是一个“纯粹的”OO语言,一切都是对象,或者是Java不支持任何其他范式。但是,它确实完全支持Java风格的OO作为语言的子集,以及程序和功能样式编程。
  • 大型标准库:D1有Tango,符合条件。 D2有Phobos,它不是现代标准的“​​大”,但比C或C ++的标准库大。然而,最近人们对贡献很感兴趣,而Andrei Alexandrescu(其主要设计师)已经接纳了几位新的贡献者,包括我自己。
  • 广泛的文档:标准库和语言在Digital Mars网站上有相当好的文档记录。还有Andrei Alexandrescu的书"The D Programming Language"
  • 网络开发:这是一个公认的弱点。 D(还)没有一个好的Web框架,虽然它的原生unicode支持和优秀的通用编程支持应该使编写一个相对容易。

答案 5 :(得分:1)

我也希望有另一种类似Java的技术。最近我一直在做Flex / Actionscript。虽然我非常喜欢它,但Actionscript技术严重缺乏Java的优雅。 Adobe可以编写一些优秀的跨平台API,但它们没有足够的资金来构建优雅的语言和编译器。我也尝试过Ruby,但Ruby的VM非常糟糕。在与其他技术调情之后我回到了Java,我认为这是因为语言足够好,但JVM是目前最好的。

那么你想继续使用JVM还是真的想完全离开JVM?保持JVM有很多选择:JRuby,Scala,Groovy,Javascript,Clojure是最重要的参与者。但是,有很多优秀的语言可以利用JVM的功能。

离开JVM还有很好的选择,比如python,ruby和erlang。但是你放弃了JVM的一些很好的功能,比如性能(大的),以及如果你需要速度,可以下载到像Java这样的好语言。其他人的意思是使用C或根本不使用。

我终于不再担心Java的未来了。 Sun竭尽全力搞砸了它,结果仍然相当不错。我认为Opensource对Java的成功影响要大于Oracle或Sun所能拥有的影响力。

答案 6 :(得分:1)

我还不能发表评论,所以我发布了与Python讨论相关的答案。虽然Python没有编译成机器代码,但是有一个名为Cython的Python-to-C编译器,它可以编译几乎所有有效的Python - 最终开发版本中的闭包(!)。它对Python社区的某些部分产生了很大的影响,例如,我最近在Euroscipy,超过一半的会谈提到了Cython。

答案 7 :(得分:0)

我个人不喜欢PHP,但它确实符合您的所有要求。它没有正式支持编译,但有Hip Hop项目将PHP编译为C代码。 Facebook目前正在开展此项目。

那就是说,我强烈反对你不使用它:)

答案 8 :(得分:0)

C#是唯一能满足您需求的东西,并且不会感到绝望,或者对有限的图书馆感到沮丧。对于开源/非窗口,请使用mono。这是CLR中大部分重要内容的良好,成熟的实现。

有些东西(WPF,WCF等)从单声道中“丢失”,但这些并不是平台的一部分,因为它们是特定于Windows的专有工具包。其中一些正在以单声道缓慢实施,有些则不是。来自java,你不会错过它们,因为你正在寻找一个平台和良好的标准库来构建,而不是gui工具包或whiz-bang通信框架。

对于使用“喜欢”java构建内容并提供类似功能级别的平台,C#+ CLR是最明智的选择。

答案 9 :(得分:0)

使用Cython你可以获得两个世界中最好的东西,在python中编码的能力,用C和C ++编写代码的能力,当然还可以编译你的代码以及使用两个python ac / c ++库的能力。框。如果你不喜欢C ++语法,cython语法就是python语法等等。

link text