【IT168 评论】业内存在一种普遍的观点,认为对于创建在线服务的创业公司来说,Java/J2EE不是一个合适的开发平台。其中比较具有代表性的说法是“远离J2EE,它太重量级了,开发在线服务所需时间较长,对于按小时收费的顾问来说,它或许很合适,但对于明智的创业公司来说,它不适合。”或者“Java开发成本太高了。硬件和人力资源方面的前期投资比较高,而且完成一件非常简单的事情却需要编写太多的代码。新创公司用不起它。”下面我将解释这种观点的错误性。
起因
和大多数误解一样,上述观点只是简单的重复一些断章取义的说法,的确,在过去10年Java的发展过程中,太多抽象架构和野心勃勃的框架来来去去,造成了Java使用的复杂性;但这已经是过去时,再反复提及就显得有些无趣了。而且关键所在是,一门语言和工具好像不存在让你必须使用复杂解决方案的东西。
我的观点恰恰相反:如果你拥有Java专业技能,在开始创建一个在线服务时你将处于优势地位。
使用Java来开发你的在线服务,可以焦点从企业开发转向你自己,同时在营销战略方面拥有一个全新变革;相关的业务逻辑可能会变得相当简单,你无需重新发布自己的代码,无需保证它符合某种复杂的软件标准;当然你还会碰到复杂的问题。但无论你使用哪一种语言或框架,都会碰到这个问题。
务实的态度
认为Java不适合开发在线服务的人想当然的认为,Java程序员往往缺乏务实的态度;但这种设想显然是没有根据的。
下面我们将一起看一些多数资深开发者所熟知但不会公开讲出来的简单事实:你可以编写优秀的应用却无需编写一行单元测试和Javadoc代码。而且你可以省下在单元测试中编写和修复漏洞所耗费的时间,将其用于让人工测试人员来试用你的程序,这种方式得到反馈的价值远大于自己测试所得出的结果。另外,人工测试人员会告诉你代码测试永远无法告诉你的界面缺陷,诸如黑色背景页面中的黑灰色按钮,或异常的点击广告链接等。你可以对自己的单元测试和JavaDoc代码自鸣得意,但一些可以骗过它们的明显错误却逃不过用户的眼睛。
坚持实事求是、用户第一的态度,与使用Java开发并不冲突,你可以是一个天才万金油式程序员,当然也使用Java语言。
我们都应该感谢动态语言社区,它们不断的成功说明,在很多情况下,任何“皇帝新装”式和自定代码质量标准的行为,以及过于呆板的盲从教科书式方法体系,在很多情况下没有太大用处。更社交化的测试和用户界面设计才是创建在线服务的成功之道。但我认为,使用哪一种开发语言倒是次要的问题。
在Java中,你可以使用很多技巧来避免复杂性:鉴于类重载可能导致网络服务器丢失会话,你可以简单的在一个包含JSP文件中发布某些实验性业务逻辑。拥有全面技能不取决于使用什么语言,而且如果在使用Java开发时遵守追求实效的理念,你将取得完美的成功。
注意,我认为开发语言的选择在你创业之路中并未最至关重要的。不过我同时认为:如果你拥有Java技能,使用它,你会取得成功。
其中一个真实的成功案例是,鉴于我们在Java网络开发方面拥有大量经验(我们开发了Teamwork),我们使用Java的最简化解决方案和目前的非常好的工具,全新开发了两个在线服务,并把它们放在网上测试了3个月,以实际查看Java在此过程中的实际作用。
另外我们注意到,服务器端开发在整个开发过程中仅仅占一小部分,设计和UI/JavaScript部分变得越来越重要。
丰富的Java世界
如果你是一个Java开发者,并正在考虑放弃它,那么我希望你三思而后行:在Java中拥有许多其它环境中明显不具备的功能,例如:
选择机会
在Java世界中,我们幸运的拥有多种选择机会;更确切的说,对于一个定义明确的通用问题,你往往可以找到多种解决方案。这在一个“封闭”开发者社区中是不可能存在的事情。
重构
你可以享受到Java清晰的语法,以及其静态类型的所有优势。如果你对动态注入功能动心的话,考虑一下你可能因此而丧失对重构可行性的信赖,这对于Java来说是一件几乎可以肯定的事情。而这意味着你可能恢复到原始的石器编程时代,这无疑是一件愚蠢的事情。Java核心非常稳定,基本的特征不会被重写:很多情况下,这是一个质量问题。你能够获得最大的服务器端开发社区。这是一个简单的事实。
好的的生产商支持。
服务器端Java已经可以非常快的运行在各种环境中,而且运行速度在不断加快,今天的服务器已经不再那么重要。快速且不需要较高配置的硬件,这些与本文开始提及的那些观点是相矛盾的。如果你在使用一个关系数据库,借助于熟悉和已被事实证明的模式,所有组件都是非常灵活的。
一个真正的虚拟机。
虚拟机应该运行在所有主流OS上,而且具有相同的功能。否则它就是在骗人。
所有这些使得Java成为一个适合任何类型开发的伟大平台。根本问题是:Java环境是否有助于帮助解决你的实际问题。