Java繁琐笨重,为啥还有这么强的生命力?

尤其是在企业软件领域?
服务器君一共花费了168.971 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

知乎上看到的一个问题:Java 语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?

我只接触过一点Java,仅提供一些观察同事搞Java项目,还有一些自己思考而得到的看法(本人主要在UNIX下写C和Shell):

语言本身

1. Java语言是不是繁琐呢?手头有一本《Thinking in Java》中文第四版,数了一下正文共22章856页。随手翻一下,示例代码和讲解正文大概比例在1.5 : 1这样。没有真正用Java干过项目的人肯定会大为惊叹:我勒个去,这么多知识点!此为“繁”;

2. 绝大部分搞编程的人,事实上,都是在使用一门语言的某个子集。该子集的形成由项目主导者发起、开发活动参与者共同决定,且相对长期稳定。每一个即将参与该项目的人肯定会先把语言学个大概(其难度参考前一条),然后再根据项目学习该语言子集,最后固化下来。不断使用该子集固然能提升开发效率,但代价不菲,极容易就变成了项目中的一颗镙丝钉(“专家”);

3. 一门语言的设计肯定不会一蹴而就,一步步改良。没记错的话,Java诞生于1995年左右,到今天已经快满20年。在当时那种IT环境和条件下设计出来的语言,必然存在许多妥协、限制与错误,既不能随便将之抹除(可能还有很多工程依赖着),也不能随便更正,只能通过添加新语法、新类库来打补丁,导致语言更“繁”。举个例子,非内建容器类库是一个典型硬伤,再举个例子,时间日期类没见有多好用,也没见有更新过,连替代品都没见过(恕我不写Java,的确没见过);

4. 类库(框架)丰富是好事还是坏事,要看针对同一个任务能找到多少替代品。如果有三到四个,那么肯定是好事,既不会造成单点故障,也不至于造成理解和记忆上的负担。但是类库太多,选择太多,人的幸福感反而会下降,高效率也就无从谈起;

5. 框架真的可以保证快速开发吗?熟悉的话是可以的,专家编程嘛!但是

  • 熟悉之前要花非常多时间学习使用吃闷亏。
  • 框架只能免除掉一部分开发工作量。
  • 框架跟业务总是存在“不合缝”的差异。
  • 只不过将复杂度从开发转移到了部署运维。
  • 依赖性极强。

6. IDE可以提高开发效率吗?仅仅一部分罢了。IDE本身就是个非常复杂的东西,将之调校到符合个人开发步调的进程可能会持续很久,事实上大部分人也只是用一些常用功能罢了。而且

  • 基于图形界面意味着自动化不容易(需要编写额外插件)。
  • 出了问题查找原因不易。
  • 依赖性极强。

7. Java本身是面向系统(机器)的,不是面向开发人员的。这种强设计保证有助于提升目标系统的可靠性,却牺牲了开发人员的幸福感。既然设计得如此严谨规范,为什么不能自动生成Java程序,而非得找一大票北大青鸟的人来写?

工程管理

1. Java已经发展太久,太多项目依赖于它,“还在运行中的系统就不要去改动”,所以如果要选的话,后继项目可能还是会用Java。积累下来的项目资源不复用将是巨大的浪费,但同时也会将原有的设计错误、补丁、复杂度一并继承下来(能大赚一票当然好,但更好的是可以持续赚若干票);

2. Java的强系统可靠性保证影响了IT经理们的技术判断和选型。有些业务第一要求是“稳”,第二要求才是“快”。如果这类业务可以分解成细小任务并行执行,没有理由不用Java,硬件方面花钱买就是了;

3. IT经理们的技术选型影响着人才市场的供应。既然如此之多的公司和项目选择Java,那么对于人力资源供应异常丰富的中国而言,想借助初级IT能力就业那实在太容易了。反过来,人才供应丰富又进一步强化巩固Java的地位,因为能替换的人力部件实在太多了,还便宜(真的,学Java除非能跟业务搭上关系,否则用个五年十年都是白搭);

4. Java语言是“业界最佳实践”,意味着出错了不能责怪选它和用它的人,而得责怪整个业界捧错了它(参考《黑客与画家》)。

其它

1. 创业公司还是不要上Java,做快速原型这玩意确实不合适,做稳定业务则可以认真考虑;

2. Java该革新了;

3. 如果没有Sun和Oracle,Java又当如何?

Java 语言繁琐,开发效率低,是事实,否认这个事实的大都是深入接触语言种类比较少的人,或者说他们没有接触过比 Java 更简洁,开发效率更过的语言。但问题是,目前没有另外一种语言,不繁琐,开发效率不低,但又同时具有 Java 的优点

换句话说,你选择一个语言不是因为它的缺点,而是因为它的优点。——如果对你具体的应用来说,这个优点是必须的。那么你就没有办法选择其他的不繁琐,开发效率不低的语言。只要有替代可能,那么 Java 对于我的项目而言绝对不会是首选语言。——不过在某些领域某些项目中 Java 还无可替代罢了。

本文地址:http://www.nowamagic.net/librarys/veda/detail/2017,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/2017

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《计算机程序的构造和解释(原书第2版)》 艾伯森 (译者), 裘宗燕 (译者), 等 (译者)

《计算机程序的构造和解释》(原书第2版)1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释》(原书第2版)对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。《计算机程序的构造和解释》(原书第2版)自出版以来,世界各地已有100多所院校采用《计算机程序的构造和解释》(原书第2版)做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。

更多计算机宝库...