大家好,今天小编关注到一个比较有意思的话题,就是关于java 语言缺陷的问题,于是小编就整理了5个相关介绍Java 语言缺陷的解答,让我们一起看看吧。
- 我听很多人说JAVA已经过时了,下一个要淘汰的语言就是JAVA,真的是这样吗?
- Java有哪些不好的设计?
- 现在有那么多热门编程语言,是否还有必要去学习JAVA?
- Python相比Java的优势是什么?缺点又是什么?
- Java都到16了,为什么感觉都还在用8,是越做越差了吗?
我听很多人说JAVA已经过时了,下一个要淘汰的语言就是J***A,真的是这样吗?
先说结论:J***a正在过时,并且可能会被淘汰。
每次有人唱衰J***a的时候,都会有一群J***a程序员愤怒地出来反驳,我也曾是其中的一员。但是现在我更喜欢尊重事实,拿数据说话。
从TIOBE网站每月提供的编程社区指数,我们可以清晰地看到,J***a的占比从2001年6月的26.49%逐渐减少到今年(2021)6月的11.54%,20年间下降了15%。这个排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并根据各大搜索引擎的搜索热度以及Wikipedia、Amazon、YouTube统计出的排名数据,可以说能够客观反应出各编程语言的热门程度。因此,我们可以得出结论:J***a正在逐渐走向衰落。
下面我将试着分析J***a市场份额逐渐减少的原因,以及J***a语言的优缺点,希望能对你有所帮助。
J***a占比减少的原因:
- 各种新语言的崛起。J***a鼎盛的时候,市场的竞争对手很少。而这些年,随着计算机硬件的发展以及互联网的普及,各种编程语言也随之井喷式地出现。每种相对热门语言出现和发展都会吸走一部分热度,并带起新的一波唱衰J***a的节奏。这些语言的代表早期有c#,最近有Go。
- JVM体系中一些“Better J***a”的出现。由于J***a语言本身的一些弊病(下文会详细说),JVM上出现了一些语言,如Scala、Groovy、Kotlin,它们打着“Better J***a”的旗号,***用和J***a互通的形式发展。一些对J***a体验不满的团队,可能会选择转向这些语言。
- 互联网热点的切换。前些年服务器端编程可能是互联网领域的主流,近年来由于机器学习、大数据等概念的兴起,对这些概念支持更好的语言得以兴起,如python、R、Scala等。
- J***a语言自身的缺陷。
J***a语言的缺陷:
- 语言特性不够丰富。J***a具有跨平台和向下兼容这两大卖点,但它们同时也是J***a语言沉重的包袱。带着这些包袱,J***a只能缓慢保守地增加语言特性。一些其他成熟语言具备的特性,J***a只能选择不支持或通过替代的方式支持。如J***a中没有函数的数据类型,“类型擦除”的方式实现泛型等。
- 语法过于啰嗦。J***a的样板代码可能是所有编程语言里最多的。Python程序员100行代码可以搞定的事情,J***a程序员可能要写上500行代码。
- 应用场景不是刚需。J***a虽然在服务器编程方面找到了统治地位,但是这种统治地位并不牢固。具有服务器编程能力的语言太多了,如php、python、Go、dart等,甚至js这种浏览器端的语言也来凑个热闹,搞了node.js专门用于服务端编程。
- 对多线程的支持不友好。J***a对多线程的支持设计得非常不友好,即使经验丰富的程序员,也容易编写出产生致命缺陷的代码。
J***a语言的优势:
- 上手简单。J***a的语法少,并且非常符合直觉,非常适合作为新人的入门语言。
- 生态完整,社区活跃。有海量的第三方框架和依赖包,基本上各个领域都能找到成熟的解决方案。
- 跨平台。对各个平台的支持比较完善,基本可以实现“一次编写,到处运行”。
- 存量项目多。J***a运行在数以亿计的硬件设备上,这些系统的维护工作足以养活一大批J***a开发的程序员。
J***a程序员何去何从?
- 首先不要过分焦虑,J***a被淘汰不会是一两天的事情。
- 其次不要把鸡蛋放在一个篮子里,多掌握一些技术,技多不压身。
- 最后提高对自己的要求,多修炼内功,从原理上理解编程,这样就可以不受语言的限制,随时能够适应新的领域的工作。
哪门语言被淘汰都不稀奇,淘汰j***a那就省省吧,看看j***a的生态,懂的自然全都懂。黑j***a的喷j***a的唱衰j***a的,十几年来数不胜数,别的语言可没这个实力。j***a是过时了,但j***a生态一直在与时俱进呀,且越来越不可取代了。j***a就算被取代,别的语言也没啥好高兴的,因为大概率是被其他jvm语言取代了
J***a 是一种非常流行的编程语言,它在企业和开发者社区中都有很高的普及率,并且被广泛应用于各种领域。从这个意义上说,它确实没有被“淘汰”。
然而,随着新的编程语言和技术的不断出现,J***a 也面临着挑战。新的语言和技术,如 Python、Scala、Kotlin、Rust、Golang 等语言,正在吸引着越来越多的开发人员。同时,随着数据科学和机器学习领域的发展,Python 等语言也逐渐成为了主流。
不过,J***a作为历史悠久的编程语言,仍然具有很强的生命力,在很多领域仍然有着广泛的应用。例如,企业应用程序、移动应用程序、游戏开发、云计算、大数据等领域中都有J***a的存在,还有就是J***a最为稳固的生态,这也就保证了J***a在未来也将继续保持其重要地位。
另外, J***a的企业版本 J***aEE 以及 Spring 框架在微服务领域有着不错的表现,在新兴的微服务架构中,J***a也保持着重要的地位。
总的来说,想要取代J***a也并非一朝一夕之事,J***a 不会因为新的语言和技术的出现而迅速淘汰,它仍然是一种非常重要的编程语言,未来也将继续保持其重要地位。
J***a有哪些不好的设计?
J***a的出发点是提供一个比C/C++“安全”得多的编程环境。虽然GC和数组越界检查起到了很大的作用,但是J***a又在以下3点偏离了安全初衷,使得程序员仍然[_a***_]时时刻刻提醒自己才不会犯错
- 整数计算会无声overflow/underflow。这就是说你不能用c = (a + b) / 2来计算两个整数的平均值。由于这个非常反直觉,而且一旦溢出程序员也得不到提示,因此历史上造成了JRE的标准库里潜伏很多很多年的bug
- 多线程情况下的Memory Model。由于向性能妥协,这个机制偏复杂,在没有深入研究的情况下大多数程序员都会犯错。更糟的是很多J***a程序员甚至不知道这个概念(也许连volatile这个关键字都没用过)
- Exception。理论上Unchecked Exception几乎可以从任何一行调用中冒出来,因此分析代码的时候程序员不仅要理解正常情况下的程序流程,还要兼顾任何一行冒出异常的情况。这是非常大的思想负担(C程序员就不要担心这个)。如果处理不好,异常会破坏程序核心对象图的完整性,导致任意后果的程序bug
编译期间泛型,有时候运行期间就会让人疑惑,字段的get.set不如C#的属性方便,stream的api说实在的很难用。不如c#简洁。模块化最近才出来,之前都是打包工具来做这些。其实问题就可以看j***a升级文档,文档写了什么,就说明之前做的不好
现在有那么多热门编程语言,是否还有必要去学习J***A?
大家伙??当你进去了软件行业,你会发现没有哪个语言是轻松的,无论你学什么,数据库必须吧,linux必须吧,git 要学的东西太多,语言都是想通的,关键是程序的思想。当然现在的大数据和云计算很火,但是作为软件行业,必须也得精通一门基础语言,具体要看你自己职业规划吧,选择了一门行业,就好好去奋斗吧,加油!
用什么编程语言取决于他的成熟程度和市场需求,举个例子来说大家都说J***a好但是我们要做客户端程序可能用C#或者C++就比J***a更好一点,但是又需要多少客户端程序的哪?这就是我上面说的要看成熟度和市场需求,个人观点,编程是一件很耗精力的事儿,希望大家谨慎选择选择不好可能需要面临重新学习语言的问题
虽然现在有很多编程语言,但是J***a还是很有必要掌握的。
J***a这个号称网络普通话的开发语言在互联网时代得到了大量的使用,因为J***a本身就是为互联网而设计的语言。从早期的applet到后来的Servlet、JSP、EJB再到各种开源框架,比如Struts、Spring等都得到了大面积的使用,市场的反馈也非常不错。
在我看来,目前的J***a还是具有不可替代性,在Web开发领域虽然有Python、PHP可以选择,但是在性能上J***a的表现还是比较突出的。大型Web平台通常都会选择使用J***a,因为性能和安全性方面J***a还是有较大的优势。
J***a的使用领域也非常广泛,J***a是android平台的开发语言,大量的安卓应用都要使用J***a进行开发,作为目前最为庞大的开发市场之一,Android平台的发展必然会带动更多的程序员掌握J***a语言。
说到移动互联开发,一定要说一说我们团队最近刚发现的一个问题。我们在App上要实现一个选择列表的加载,列表中包含四级菜单,一共有将近两万个子项。在处理这些数据的时候Android平台的J***a语言就能顺利完成处理,而IOS平台下使用的OC则需要分段加载,否则处理不了。通过这个例子就能说明一定问题,当然在性能方面J***a的表现一直没有让开发人员失望。
那么是不是J***a就没有缺点了呢?当然有,J***a相对于其他语言还是有点复杂,比如跟Python和PHP比起来J***a还是稍微难于掌握一些。另外,J***a过于强调程序结构(并不是模块),很多程序员对此都深有感触,有的时候写3个类文件需要打3个包。
另外,相对于Python来说,在很多功能的开发上J***a还是非常依赖程序员的经验和能力,而Python则把很多开发集成到了库文件中,这极大减轻了程序员的压力。这就是很多程序员爱使用Python而不愿意使用J***a的原因,在程序员的眼里,J***a还是太“重”了。
虽然J***a有以上的缺点,但是目前的程序开发领域J***a语言还是不可或缺的,建议想做程序员的朋友重点学习一下。我在头条上写了关于J***a学习的系列文章,感兴趣的朋友可以看一下。
我使用J***a语言也有10多年的时间了,如果有这方面的问题可以咨询我。
看最近编程语言的排行榜j***a还是高居第一,这么热门的语言没有不去学的理由。学习j***a的几个理由:
1.足够多的就业岗位,这是很现实的问题,学习了编程语言就业机会少的可怜也是很可悲,从理智来讲选择就业最多的编程语言,无可厚非。
2.j***a语言经过这些年的发展,算是成熟的语言了,不是前几年参加几个月的培训直接就能找到一份还算不错的工作,现在行业比较成熟了,初学者要找到一份不错的工作,需要基本功弄扎实,而且目前状态下成熟的j***a程序员在市场上还是很受欢迎。
3.J***a学习可以大致分为以下几个步骤
(1)先打好基本功常见的j***a语法
(2)j***a高级编程部分要掌握
(3)框架部分的学习
(4)开始尝试做点实际的项目
4.推荐比较不错的j***a书
还是建议学习一下。因为j***a是编程的基础需要,而且它的跨度最大,还有丰富的生态!
(一)j***a语言的跨度。j***a从推出到现在,因为跨平台以及开源的特性,受到了广大的支持,尤其是企业端市场,其他还有linux操作系统上应用,移动设备android手机上的应用,还有目前比较活的大数据,云计算等,大部分都应用了j***a,因此学习一些是有帮助的。尤其是编程思想、设计模式、数据结构、架构等等。
(二)丰富的第三方***,在j***a领域,无论哪个方向都有丰富的开源***可以选择使用,这是热门语言不能比拟的优势,比如各种组件、中间件等等,在实际工作的时候可以选择,方便不少,学习一点对工作非常有帮助,同时在开发、调试程序的时候,也可以有更多的人可以选择。
(三)j***a语言是其他热门语言的基础!目前一些热门的语言很多都是以j***a为基础演化过来的,如scala,kotlin等,学好j***a语言再学习其他语言就比较轻松了。从就业和工作的角度,学习j***a是非常有必要的。毕竟语言只是思想实现的载体,多学习一点能够开阔思想,触类旁通。因此建议你多学习点。
Python相比J***a的优势是什么?缺点又是什么?
python的优点在于代码简洁易懂,并且有很多已经实现的包可以直接下载使用,可以很快开发出一个项目。
J***a属于编译解释型的语言,有一个先编译的过程,在计算密集型代码中速度比较快。
互联网问题可以咨询“U”就业。
1.Python比J***a简单,学习成本低,开发效率高;
2.J***a运行效率高于Python,尤其是纯Python开发的程序,效率极低;
3.J***a相关资料多,尤其是中文资料;
4.J***a版本比较稳定,Python2和3不兼容导致大量类库失效;
5.J***a开发偏向于软件工程,团队协同,Python更适合小型开发;
6.J***a偏向于商业开发,Python适合于数据分析;
7.J***a是一种静态类型语言,Python是一种动态类型语言;
8.J***a语法定义较复杂,Python语法简洁优美;
9.实现同一功能时,J***A 要敲的键盘次数一般要比 Python 多。
从以上对比可以看出,Python学习更简单,J***a学习相对较难,如果是之前没有接触过IT编程,现在想转行做这一块,可以考虑学习Python,毕竟,现在社会环境对Python编程十分有利,而且学习简单,很容易获得高薪;对于有编程基础,且对J***a感兴趣的,也可以学习J***a编程,J***a是一门很完善的编程语言,应用十分广泛,也是一个好选择。当然,如果仅是对编程感兴趣,可以两者都学习一下,每一门语言都有自己的设计思想,没有好坏之分,只有是否适合,一个合格的程序员多学几门编程语言,了解不同的方法和思维去解决问题也是一件很好的事情。
先说一个不正经的思路:Python的优势在于培训市场还没有饱和,所以漫天的广告
言归正传,先说点不好听的缺点:
慢
慢节奏的生活是很多人羡慕的,但是运行速度慢的程序可不是工程师想要的。Python慢到有点发指的地步,比V8上的JS还慢不少. (研究一下描述符,你会发现python调用对象方法的开销好大!) 但是python创始人也说了, 一般程序的瓶颈在于20%的代码, 所以你可以把那20%的代码用C重写(反正python是胶水语言,用C重写部分代码也没什么大问题)
动态类型
动态类型属于写的时候爽翻天,一直写一直爽,但是到了出bug或者重构的时候就傻眼了。
但是,如果大部分工程师有比较好的写unit test的习惯的话,还是可以通过unit test起到保护作用并且帮助代码理解。
再来说说优点:
一切都是对象
很多动态语言都有类似功能,任何东西都可以传来传去。class可以,函数也可以。
优点:
1. Python作为动态语言更适合初学编程者。Python可以让初学者把精力集中在编程对象和思维方法上,而不用去担心语法、类型等等外在因素。而Python清晰简洁的语法也使得它调试起来比J***a简单的多。至于哪个更“优雅”纯属个人喜好,但对于初学编程的人Python更直观应该没什么异议。
2. Python有一些J***a没有的强大的架构2.1. Advanced Python Constructs,可以表达非常复杂的Logic
3. Python有非常强大的支持异步的框架如Eventlet Networking Library,而据我所知J***a要实现这些功能要麻烦的多。也因此Python适合一些可扩展的后台应用。(但除此以外Python可扩展性是不如J***a的)
2. Python作为脚本语言,更适合开发小的应用,而且极其适合在应用发展初期时用来做原型
缺点:
1. 由于Python的优点也无可避免会有牺牲------由于是动态语言,比J***a还慢。你可以想象一下编译器对于没有typing的变量,需要一个一个check具体type所耗得时间。而J***a相比起C++等等本来就不快,可想而知更慢的效果... 但很多人觉得Python code更短小精悍,所以实际跑起来不见得比J***a耗时。
2. J***a很适合发展跨平台应用,几乎常见的电脑、智能机都能跑J***a。而Python就不一样了...
关于他们的异同可参考Python vs J***a: Key Differences
说得不对的地方请大家指出 :)
J***a都到16了,为什么感觉都还在用8,是越做越差了吗?
企业级现在还停留J***a8版本。大企业用什么版本才有影响力。因此导致感觉好像还在用8。
这里很大的误解是企业保守落后,其实企业版的J***a8和Oracle或者openjdk版本的J***a8区别非常大,不能混淆的。
先说缺陷修复和优化。
企业版本吸收了所有世面上能看到的缺陷,当然也包括16版本的。也就是普通版本说很多修复是普通版本16才包含的,远远落后企业版本的修复速度。
再说新特性。
这么说吧,J***a的新版本特性各大厂企业员工影响和贡献极大,说大企业不关注新特性是外行,就是人家弄的还说人家不懂是完全没道理的。
知道这些就明白了。所谓16是品牌宣传用的。企业使用都自己做优化了。
我们还在用JDK6呢,一个公司开始使用一个东西后升级是很大代价的,本来运行稳定你这一升级很多都可能有问题,而且这些问题是没办法测试出来的,如果不是有些功能必须要用到高版本的JDK,我们根本不会考虑升级,因为相应一些三方插件也要处理,而且可能不一定有对应的版本,像转PDF,转EXCEL等,再加上現在J***A升級有多大的意义呢?j***a6其实可以满足几乎所有需求。
1.j***a8足够解决现实业务问题,并具有足够的稳定性和通过市场项目验证。
2.j***a8之后协议变更,变为收费,升级会带来法律问题,只要成为肥羊之时就是待宰之日,谁也不想被别人掐住7寸去发展。
J***a当年要不是一直社区开源运维,还不早被C#打懵了。现在8以上的新版本被Oracle商业公司把持着,你觉得除了大数据之类的生态,J***a还有啥特别的大优势?
golang他不香吗,j***a,一升级就让你找不到北,居然还要收费,现在市面上哪一门开发语言要收费?这是有多缺钱,说学习自己开发用不花钱,那我学他干嘛,吃饱撑着啊。
到此,以上就是小编对于j***a 语言缺陷的问题就介绍到这了,希望介绍关于j***a 语言缺陷的5点解答对大家有用。