图灵社区 : 阅读 : [讨论] Java语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?

图灵社区 : 阅读 : [讨论] Java语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?

[讨论] Java语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?

推荐
11

收藏

问题源自知乎问答: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. 框架真的可以保证快速开发吗?熟悉的话是可以的,专家编程嘛!但是a)熟悉之前要花非常多时间学习使用吃闷亏,b)框架只能免除掉一部分开发工作量,c)框架跟业务总是存在“不合缝”的差异,d)只不过将复杂度从开发转移到了部署运维,e)依赖性极强;

  6. IDE可以提高开发效率吗?仅仅一部分罢了。IDE本身就是个非常复杂的东西,将之调校到符合个人开发步调的进程可能会持续很久,事实上大部分人也只是用一些常用功能罢了。而且a)基于图形界面意味着自动化不容易(需要编写额外插件),b)出了问题查找原因不易,c)依赖性极强;

  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

     0


无锋之刃

发表于 06-22 10:29

评论

时间
推荐

推荐
0

语言本身第3条中关于日期类确实是这样的;鲍勃大叔的《代码整洁之道》中有对日期类改进封装的完整示例。

对于语言不做评论,各有千秋,否则微软也不会仿效。

迷茫

06-22 11:29

编程语言都挺无辜的。 – 
无锋之刃
06-22 18:39


推荐
0

我觉得从一开始,java在消费应用领域就是短板,一直没翻身。
大胖

06-22 10:34

大众用户能投入的成本,跟企业用户能投入的成本,不在一个量级之上。前者是消费,后者是生产。 – 
无锋之刃
06-22 10:36


  • 上一页
  • 1
  • 2

我要评论

需要登录后才能发言

记住我

本文标签

java
× 16

推荐会员

相关标签

程序设计
× 14

数据结构
× 1

posted on 2012-06-27 09:58 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/06/27/2565313.html

图灵社区 : 阅读 : [讨论] Java语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?...相关推荐

  1. 图灵社区 : 阅读 : 谁说Vim不是IDE?(三)

    图灵社区 : 阅读 : 谁说Vim不是IDE?(三) Powerline 1.下载地址 https://github.com/Lokaltog/vim-powerline 2.功能说明 Powerli ...

  2. 图灵社区 : 阅读 : 十年码农聚会报道——让高龄老码农social起来

    图灵社区 : 阅读 : 十年码农聚会报道--让高龄老码农social起来 图灵社区 : 阅读 : 十年码农聚会报道--让高龄老码农social起来 十年码农聚会报道--让高龄老码农social起来 推 ...

  3. 图灵社区 : 阅读 : php+gridfs+varnish+nginx 搭建分布式图片存储

    图灵社区 : 阅读 : php+gridfs+varnish+nginx 搭建分布式图片存储 LedisDB--Go编写的高性能NoSQL数据库

  4. 图灵社区 : 阅读 : (一)开始准备

    2015年9月6日 No comments Article 图灵社区 : 阅读 : (一)开始准备. Categories: 日志 发表评论 取消回复 电子邮件地址不会被公开. 必填项已用*标注 姓名 ...

  5. 语言 micropython_很多人用Python,但MicroPython是什么?

    MicroPython 是澳大利亚程序员和物理学家 Damien George 在2013年一次成功的众筹活动后创建的.MicroPython 和 CPython 在 Python 3 语法上保持高度 ...

  6. 微软推出新逆天开源语言,告别 for 循环,提高开发效率!

    拥抱开源的微软近日又为开发者带来好消息:在受 TypeScript 语法类型与 ML 和 Node/JavaScript 语义启发下,微软推出了全新的开源编程语言 Bosque. Bosque 创作者 ...

  7. 社区团购,究竟是砸人饭碗,还是提升效率?

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K   整理| Emma 来源| 技术领导力(ID:jishulingdaoli) "社区团购" ...

  8. 利用java语言在eclipse下实现在新浪微博开发平台发微博(转)

    实现原理: 开发者利用sdk包开发某个应用完成后,该应用与新浪微博服务器连接,通过HTTP数据形式与服务器的API接口交换数据.在开发过程中,亦可实时调试. 各种语言的软件开发包(SDK)http:/ ...

  9. Java语言基础学习笔记——基础语法

    一.标识符 1:取名必须以_,$或者字母开头 2:变量必须先声明,赋值后才能使用 3:内存管理 4部分:1) code segment 存放代码                             ...

最新文章

  1. 14.3.1 调用系统的拍照功能
  2. 途虎养车APP--参数分析
  3. 程序进入后台继续执行
  4. 探索cqrs和事件源_实践中的事件源和CQRS
  5. 国家自科委管文科学部认定的国内30种重要期刊
  6. cryengine开源了吗_Linux上的CryEngine支持,将开源带入厨房等
  7. chrome开发者工具--使用 Network 面板测量您的网站网络性能。
  8. 超实用的大学网课答案搜题软件及公众号有哪些?
  9. 微信公众号开发模式几点介绍
  10. 借助JavaCV实现android手机查看PC摄像头实时视频
  11. 数据结构期末考试错点汇总
  12. 零基础学SQL(二、MYSQL数据类型)
  13. 华为mate40e灭屏显示教程
  14. 【科普】显示器连接线有哪几种都长什么样子
  15. 全球智慧城市政府50强排行榜——中国九个城市成功跻身
  16. dubbo 获取不到本地地址,返回 127.0.0.1
  17. java文件编译成功但是不能运行_Java在dos界面运行java源文件编译成功,但运行虚拟机时出现错误:“找不到或无法加载主类”的问题...
  18. CentOS7虚拟机安装教程
  19. 如何移除电路板上的元器件?
  20. matlab拉普拉斯变换锐化,图像的拉普拉斯锐化方法及讨论

热门文章

  1. html中字体怎么写,fontfamily属性字体
  2. 各类Python项目的项目结构及代码组织最佳实践
  3. Bluetooth Profile Specification之(HFP篇)4.3 音频连接设置
  4. 17-截图screenshot
  5. Java可以用到军事方面吗_恭喜遥三运载火箭发射成功, 浅谈 java 在军事方面的运用!...
  6. 对可验证随机函数VRF的简明解释
  7. Unity3D的简单商店、背包与装备系统
  8. xml建模包括以下_()是专业建模语言。A.XMLB.UMLC.VC++D.JAVA - 信管网
  9. 【备忘】AMD 显卡驱动问题一则及解决方案
  10. RT-Thread GD32F4xx 看门狗驱动