你为什么选择java而不是别人?为什么选择java来编写应用程序?
请包括您使用java的内容(桌面应用程序/ Web应用程序/移动设备).
出色的工具:IDE,CI等
大量的第三方库.
提供大量文件.
大量的开发人员可用.
平台无处不在.
完美的表现.
优秀的规格.
坚固的垃圾收集.
管理内存.
本机线程.
选择 - 由多个供应商实施.
我用Java来构建各种中间件产品:库存管理; CMS; 化学品注册; 等等
关于Java的一个好处是每个人都知道它.当然,现在我已经说过了,我会从声称从未学过这门语言的人那里得到80条评论.是因为它可能...
无论喜欢与否,Java都是我们今天在行业中最接近通用语(成语意为"共同语言")的东西.几乎每个人都在某个时候使用过Java,或者(更常见的)现在正在积极地使用Java.这种普遍存在对某些公司极具吸引力,特别是那些依赖顾问的公司.如果你用Java开始一个项目,你几乎可以保证能够找到人才来维持代码库多年.
另一方面,Java是开发跨平台桌面应用程序的优秀语言......只是没人知道.Java的大部分优势都在服务器端,加上J2ME人群的一点爱.但是,如果您客观地考虑使用Java 6uN中的Swing,那么很难找到更好的工具.不要误解我的意思,我发现它有它的缺陷,但是在最近的版本中修复了很多这些缺陷.现在的大部分问题都是思想共享:每个人都知道 Java是缓慢而丑陋的(两者都不再是严格正确的).另一个问题是Swing是一个跨平台的UI工具包.这意味着在Swing中创建专业UI比在Cocoa甚至WinForms中创建专业UI要困难得多.
最后,选择Java(与.NET或Objective-C相对)的一个非常好的理由是生态系统.其他答案提到了图书馆,这些图书馆确实值得关注; 但我正在考虑语言多样性的上升.如果您今天使用Java编写应用程序,则可以随时无缝地过渡到Scala.您还可以选择在Groovy或JRuby中编写脚本,更不用说利用Clojure中强大的并发抽象.由于其可移植性和高级性,JVM越来越成为语言编译器和解释器的首选目标(甚至超过CLR).Java确实处于这种联系的中心,并没有真正直接受益于庞大的语言云,但是它确实从所有的互操作性中获得了价值,
我此时更喜欢Java而不是其他编程语言的原因是:
价格 - 它是免费的
性能 - 由于HotSpot JIT编译器,这些天真的很快
有效性 - 具有类型安全,沙盒等严格功能的强大功能
OOP功能
非常好的,经过深思熟虑的异常处理; C++异常正好相反!
可移植性 - 它几乎可以运行
工具可用性 - 像Eclipse和NetBeans这样的令人敬畏的IDE是免费的,像Tomcat和应用服务器(JBoss,Glassfish,Geronimo等)这样的Web服务器也是免费的
灵活性 - 图形,桌面GUI,Web用户界面 - 各种运行时环境中的各种事物
aptness - 今天许多企业应用程序必须支持HTML,SQL和XML - Java对内置的所有应用程序都有很好的支持,你可以免费获得第三方库,这使得它更容易/更好
得到良好支持 - Sun不断添加改进并修复一两个版本
前向兼容性 - 与VB这样的东西不同,它的语法在每个版本左右经历了痛苦的变化,Java的语法和语义似乎从版本到版本向上兼容99.9%
我用Java编写程序已有十多年了,我对它非常满意.在此之前的几十年里,我使用过其他语言.因此,我并没有因为描述我知道的一件事而有偏见 - 这是我熟悉的众多语言中的一种.
当升级到JDK/JRE时,我会查看文档以查看更改内容.Sun很善于讲述/解释这一点.我从来没有一个非常艰难的时间从一个JDK移植到下一个JDK.
当我在家中或工作中从一个操作系统切换到另一个操作系统作为我的主操作系统时,它并没有对我编写的Java应用程序或我使用的工具造成问题.唯一的例外是Borland JBuilder,一些Borland营销或技术天才决定经常停止支持.Eclipse和Netbeans在Mac上运行得非常糟糕,而且可能永远都会.我使用过Java:
MS-Windows 95,98,NT4,2000,XP
Sun Solaris/SunOS Unix
IBM AIX
Mac OS X.
Linux的
摩托罗拉手机(MIDP,CLDC)
Palm Pilot PDA
Java虚拟机(虚拟机)无处不在!他们在:
网络浏览器
手机
掌上电脑
台式电脑
网络服务器
应用服务器
我已经为所有这些编写了程序.您所要做的就是使用正确的插件获取IDE,获取所需目标环境的API文档,然后开始编程.
我编写的GUI程序实际上在不同平台上看起来和正常工作!我不能告诉你其他供应商承诺要做多久以及他们失败多久.只是环顾四周,有些仍然存在.
Sun在Java 1.0中承诺了这一点,他们用AWT提供了它.但是,抽象窗口工具包使用本机GUI组件,这些组件之间的差异(根本没有统一标准)太大,无法在所有平台上获得相同/漂亮的外观/行为.
当Swing GUI API在十年前(1998年12月)交付时,Sun在这个便携式GUI承诺上表现得非常好.
尚未提及的事情:
跨平台桌面应用程序,即使具有复杂的GUI
一堆工具
静态类型(参见GWT)
编译时的错误消息
非常明确的错误消息
1)非常好的免费文档
2)非常好的开发商商业和免费工具
3)良好的认证和培训资源
4)良好的运行时和免费工具
5)良好的分析和监控工具
6)来自不同公司的非常好的支持选项
7)非常好拥有大量库的开源社区
Java提供了一个非常丰富的API,开箱即用,由于几乎每个平台都有一个Java VM,因此可以实现最便携的应用程序.
顺便说一句:自从我从事微软工作以来,我就没有使用过Java,但是我想不出我能在C#做的一件我不能用Java做的事情,无论是企业应用程序, Web应用程序或桌面应用程序.