java 有哪些不足,还有那些地方是需要改进的呢?
1
Cbdy 2016-10-26 12:41:18 +08:00
Java 的泛型不好,不如 C++和 C#。
有一些历史遗留的繁琐的设计模式的问题。 有类似 int 、 char 、 float 这种原生类型。 几乎没法改进,除非像 python2 -> python3 大改,但是你也看到 python 社区的现状了。 |
2
wyntergreg 2016-10-26 13:03:30 +08:00
内存管理
|
3
hooluupog 2016-10-26 13:04:21 +08:00
Generics ;
first-class function ; value type ; NullPointerException ; 这几个感觉是影响比较大的。其他的不是那么有所谓。 |
4
kideny OP @wyntergreg 安卓吃内存,是因为这个吗?
|
6
yidinghe 2016-10-26 14:02:48 +08:00 via Android 1
Java 在语法方面的改进可以说是很谨慎的,不是它不愿意改,而是大家的接受需要一个过程,看 Python 就知道。 Java 8 已经出来这么久了,很多开发者甚至对 lambda 表达式毫无概念。 Java 在这之前也推了很多代替旧功能的新 API ,例如 NIO , Paths , LocalDateTime , JavaFX ,但是有多少人认真去学了呢。反观前端社区,对新技术如痴如狂,这才是有活力的社区。
|
7
maomaomao001 2016-10-26 14:07:34 +08:00 via Android
看 kotlin
|
8
jp5490 2016-10-26 14:10:04 +08:00
前端太灵活了,所以各种框架~
|
9
lizon 2016-10-26 14:14:49 +08:00 3
|
10
murmur 2016-10-26 14:17:24 +08:00 2
Java 好就好在 别的语(qian)言(duan)还在热衷于造轮子的时候, Java 已经坐拥一个帝国
问题也是没有什么国家是十全十美的,有战乱还有起义还有不满 |
11
imcxy 2016-10-26 14:24:04 +08:00
没什么需要更新的,抄 C#就行了, C#有各种语言的开发经验,还有钱。让 C#去创新,踩坑!等成熟了拿过来。。
这十来年不都这么过的么~有啥问题~ |
12
inisun 2016-10-26 14:24:44 +08:00 via Android
@yidinghe 只能说 6 这版本太多人用了,函数式编程本来就不是大众的玩意吧, lambda 对大多数程序员来讲还没以前的写法直观, N IO 感觉都成面试必问了,而且新的玩意不是想用就用,就是 struts 这种大规模使用的都出过不少事了
|
13
WhyAreYouSoSad 2016-10-26 14:27:17 +08:00
@imcxy 为什么说他抄 c#? for example
|
14
hcymk2 2016-10-26 14:29:15 +08:00
锤粉和暴白.
|
15
zhuangzhuang1988 2016-10-26 14:35:02 +08:00
<Java is dead, long live Ceylon, Kotlin>
|
16
ZiLong 2016-10-26 15:24:25 +08:00
- 简单,代码类似白话文,只要你英语稍微好点,基本就能看懂代码了.但是由此被人诟病代码啰嗦,打字打得手都痛了;
- 庞大的生态,并且是很多领域的上佳之选(比如 android,大数据,web 应用开发) |
17
vghdjgh 2016-10-26 15:41:05 +08:00 1
1 、语法啰嗦
2 、语法表达能力弱 3 、大部分使用者有过度设计和滥用设计模式的倾向 |
18
lixiaohan 2016-10-26 15:44:35 +08:00
没觉得有什么不好,作为大多数人的第一门语言,已经够好了,学好 java 再学习其他语言,顺手拈来
|
19
murmur 2016-10-26 15:54:37 +08:00
其实说这个问题很大一部分原因是 java 的第三方类库太牛逼了 除了花哨的语法之外(妈的 c#的语法特性那么多每次都被批判也没见人粉 c#,说语法特性的是最虚伪的) 两套类库(apache utils/guava)基本把语法坑都填平了
更不要说拉到 tomcat 里就能用的那些重量级跑车 反观 XodeJS 估计至少几百个 xode_modules 才能搞定 |
20
gowk 2016-10-26 16:09:55 +08:00
都发展这么多年了,各种问题都有现成的解决方案,手到擒来的事,除了繁琐一点,其实说起来挺好用的。
新项目看情况适当考虑别的语言,如 Python , Go |
21
q397064399 2016-10-26 16:18:14 +08:00
基本上没什么大问题, 仅从语言本身来讲
泛型 (确实是个问题,但是问题不大,这么多年不也好好的过来了,何况绝大部分写业务代码 码农们 你 TM 哪有那么多算法需要跟数据类型剥离开来的) 啰嗦 (本来就是设计用 IDE 写代码的语言,方便后来人阅读,你非要用记事本装逼,我也没办法) 拉曼达 (这个与 Java 本身相违背, Java 的设计 包括 J2EE 大家都看得到,驼峰名字能有多长就有多长,好处呢?基本上英语过关,没学过什么代码, Java 代码也能看得懂,而且各种高级别的语法糖真的有意义么?这么多年 C 语言没更新语法糖 不活得好好的) 语法很笨拙 (在这种有 IDE 的年代,多敲一个不会死人) |
23
altairkuma 2016-10-26 18:16:49 +08:00
问题就是 Java 的使用者认为 Java 没什么不好。或者认为那么多人都用了这么多年,好不好就这样了。
|
24
lululau 2016-10-26 18:32:45 +08:00 via iPhone
对我来说, Java 的最大问题是各种库,包括标准库和各种第三方库,代码写得太抽象,看不懂。。。
|
25
murmur 2016-10-26 18:43:33 +08:00
@lululau JAVA 是跟 C++画平行线的语言,是可以作为课本基础学习的,所以底层还得有灵活性,怕抽象直接上 Apache Utils 和 guava
|
26
lydhr 2016-10-26 19:20:24 +08:00
本身运行在 jvm 上,这就是为什么 android 手机感觉比 ios 慢, android 就相当于在手机上开一个虚拟机用
|
27
cjyang1128 2016-10-26 19:44:54 +08:00
写复杂的业务逻辑不如脚本语言来的方便,因为 jdk 很多 API 设计的比较底层,或者说不太好用,需要借用其他第三方库才能达到相同的开发速度。比较好的就是不用学很多新框架,或者说用来做后台服务的语言其实不需要这么多框架,稳定是最重要的。所以我觉得服务就用 Java 写好了,前台就用脚本语言,相得益彰。
|
28
enenaaa 2016-10-26 19:56:54 +08:00 via Android
@lydhr 跟这没什么关系, oc 也是运行在 llvm 上。不爽的话,两边都可以用本地代码库。 android 慢最大原因是流氓太多。
|
29
MetaGen 2016-10-26 20:53:39 +08:00 via Android
@lydhr jvm 慢? hotspot 可以说是优化做的最好的虚拟机了,基本可以吊打一票动态语言。当然安卓用的是 dalvik 不是 hotspot ,不过不管怎样都不能把锅甩给 java
|
30
NordicShaw 2016-10-26 21:00:03 +08:00
语法稍显啰嗦。
|
31
sudoz 2016-10-26 21:19:32 +08:00
@yidinghe 场景不一样, Web 业务层面,后端的影响面更大,事故会更严重,前端再怎么玩也就是表现层的东西,玩花活玩砸的代价成本没有后端那么高
|
32
oaix 2016-10-26 21:20:34 +08:00
泛型擦除
|
33
Allianzcortex 2016-10-26 21:34:48 +08:00
@inisun NIO/New I/O,不搞 Java SE / Web 开发这块的人不知道很正常啊。。。
|
34
linux40 2016-10-27 08:18:24 +08:00 via Android
能玩的就只有注解和反射,可是这两个特别难用。。。
|
35
YzSama 2016-10-27 11:01:00 +08:00
@zhuangzhuang1988 来个总结把。视频太长上班不能看 XD.
|
36
coetzee 2016-10-27 12:03:44 +08:00
从一些语法特性来看,的确是比较保守的预言,可玩性较差,但是反过来看,意味着语言自身的语法特性限制会使工程化更强一点,毕竟不会导致太多的黑魔法语法。
不过很多 JVM 语言可以满足你的语言猎奇心理,我认为做工程化的东西 Java 足够,如果想要更强的语义性语言,那么上 Groovy 或者 Scala ,既能使用各种奇技淫巧,又可以使用丰富的 Java 库和框架。 总之,现在 Java 界是一个 JVM 生态的群殴体系,而且开源社区发展和商业发展都是不错的。 |
37
sorra 2016-10-27 12:34:32 +08:00
Java 提供了坚实的语言基础, JVM 提供了高效的运行环境。 JVM 语言群殴让你一边尝鲜一边做出有用的东西。
Kotlin 改进了 Java ,包打 Android 和后端,轻松学会,热心人士翻译了文档 http://kotlindoc.com/ |
39
kamikat 2016-10-27 13:27:58 +08:00
个人意见
Java 最主要的缺点是用的人太多,满大街都能写。 JVM 最主要的缺点是泛型不是真泛型。 |
40
ccjeaty 2016-10-27 14:04:54 +08:00
用的人太多, 没有优越感了?
|
41
pangliang 2016-10-27 15:11:27 +08:00
楼上说的太对了, 用的人太多, 感觉自己也用一样的东西就太 low 了, 一定要用一点与众不同的东西来提升 B 格
|
42
changwei 2016-10-27 23:49:02 +08:00
刚好前天有人在 SegmentFault 上吐槽了 java , https://segmentfault.com/q/1010000007266289?_ea=1290319 这是我的回答
我觉得 JAVA 对于初学者来说,更多的认识都存在于 myeclipse 之类的 IDE 上,甚至很多人用 IDE 开发了多年,都不知道 JAVA 究竟是怎么编译出来的,也不知道 jre , jdk 是干什么的,我觉得这才是最大的悲哀。 java 语法本身没什么问题,如果要拿 php 来说, php 本身就是脚本语言,弱类型语言,是用开发效率换执行效率, java 则相反,两个语言解决的方向就不一样,没有可比性。 java 的包,类库命名长但是规范,但是对于英文不好的新手来说学起来可能是吃力的关键。 jsp 的环境配置和中文支持对新手来说还是比较困难。 这些说到底,还是 IT 教育本身的问题,不能怪 JAVA 。 |
45
tt67wq 2020-01-19 15:56:28 +08:00
老夫不爱用 ide,这就没法写 java 了
|