大家好,今天小编关注到一个比较有意思的话题,就是关于java语言秘密的问题,于是小编就整理了4个相关介绍Java语言秘密的解答,让我们一起看看吧。
JAVA是如何实现平台无关性的?
对于J***a的平台无关性的支持是分布在整个J***a体系结构中的。其中扮演者重要的角色的有J***a语言规范、Class文件、J***a虚拟机等。
J***a语言规范:
Class文件:
所有J***a文件要编译成统一的Class文件
J***a虚拟机:
通过J***a虚拟机将Class文件转成对应平台的二进制文件等
J***a的平台无关性是建立在J***a虚拟机的平台有关性基础之上的,是因为J***a虚拟机屏蔽了底层操作系统和硬件的差异。
J***a是通过JVM是来实现平台无关性的。首先J***a是一门半编译半解释型语言。J***a的源代码需要用j***ac命令编译成.class字节码文件。.class字节码文件并不是可执行文件,他仅仅是类似一种编码之后的文件,它需要用JVM来解释执行。
由于J***a针对不同的平台开发了不同的JVM,但是这些JVM都实现了同一套标准,也就是说,都可以解释执行.class字节码文件,从而实现了一次代码编写就可以到处运行的目的。
当然,J***a所谓的实现平台无关性只是针对.class字节码文件,而不是JVM。.class字节码文件是跨平台的,而JVM是不跨平台的,这点尤其需要注意。
综上所述,J***a是通过JVM来实现平台无关性。
所谓平台无关性指的就是程序可以在任何平台运行,而不需要改动程序本身。基于这个概念,j***a平台无关性实现主要由一下几个部分组成。
1、中间字节码文件
我们都知道j***a程序中的代码文件最终都会被编译成字节码文件,即. class文件。这个编译工作可以通过j***ac命令来完成。平常开发中我们更多的是通过开发工具来完成的。***如我们用m***en构建一个项目,我们可以在idea中直接 build jar或者build war。最终生成的文件就是字节码文件。这些字节码文件是不能被操作系统识别的,操作系统只能识别0和1。那这些文件靠谁识别呢?JVM。
2、JVM
j***a虚拟机即jvm,是运行在操作系统之上的一个虚拟的编译系统。它的作用就是将字节码文件翻译成操作系统可以识别的语言0和1。这就是我们为什么学j***a,先要安装jdk。jdk中包括了jvm。没有jvm,j***a源代码是无法编译成字节码文件的。不同操作系统我们需要安装不同的jdk,不同平台的jvm对外暴露的是同样的接口,但是内部解释0和1的过程是不一样的,这就间接实现了跨平台。我们平常写代码就不用考虑不同平台兼容性的问题,jvm会帮你做,write once,run anywhere。鉴于此,我们也可以开发一种语言,只要能编译成字节码文件,就能借助jvm让其运行在操作系统上,就像scala。~笑脸~
3、语言本身的规范
这也是跨平台一个重要的原因。J***a的基本数据类型的值域和行为都是由它自己定义的。
不管是在那种平台下运行,J***a中的int都是32位二表示有符号整数,而float则总是遵循IEEE754标准的32位浮点数。
在像C/C++这样的语言中,基本数据类型int的值域是由它的占位宽度决定的,而它的占位宽度则由平台决定的。这就是它不能跨平台的一个原因了。
我听很多人说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的时候,都会有一群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体验不满的团队,可能会[_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 也面临着挑战。新的语言和技术,如 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不行了 J***a没落 每次都是要挑战要对标的对象要 就如苹果一样 都说苹果怎么不行怎么拉胯 每次出新品都各种吊打 国产手机各种对标超越 我喜欢J***a 尽管它不完美还有改进的空间 但是我还是喜欢用它 除非有一天没人愿意黑它了
谢谢邀请。
这是好事,一个东西有人黑说明有一定的影响力,就好比一个跑龙套的很少人黑,但是一个当红的明星被黑的概率是大大提升。
J***a发展至今已经二十多年,我印象最深刻的2009年,当时Oracle收购了sun公司,网上一片哀鸿遍野,大家都说J***a快完蛋,但事实呢,J***a到现在依旧坚挺。当然作为一个技术人员,不要让自己的语言局限在一个上,这是题外话。
1,是否有好的社区
2,是否有工业标准
3,是否有大公司支撑
你会发现J***a三者都具备了
因为J***a是近20多年最流行的编程语言,用的人多了,编程水平就参差不齐。
J***A,的确很令人反感。因为J***A太复杂,太陈旧,太冗余,太啰嗦。
那么什么样的人喜欢J***A呢?可以用来装B的人。正是因为J***A的冗余与复杂,才可以体现自己技术的高明。
但作为甲方来说,我听到乙方要用J***A,或者HTML,来做我的项目,我就火冒三丈。
一个很小的项目,就能罗里吧嗦的写上好几个月。如果用DELPHI,两周就可以搞定了
当然DELPHI也因为自身问题,没有得到发展。令人扼腕惋惜。
比如,早年我们做第一代医疗系统,三个月就干出来了。
现在这群做J***A的,两年都干不出同样功能来。
但现在程序员,都是J***A,而且生态也不一样了。我也没有其他选择。
只能眼睁睁看着,一个非常简单的任务,让这帮鬼畜们唧唧歪歪,整很久都整不出来。
吃起牛来,什么微服务,什么这架构,那架构。
程序界的"黑",一是自黑,二是鄙视链式的黑。
简单来说,程序员自嘲和自黑都是业界常有的事情。
鄙视链就像玩data的看不起玩lol的,玩lol看不起玩王者荣耀的。。
每一种语言都有自己的拥护者和唱衰者,很正常。J***a发展20多年,肯定有自己的对立面,被黑是正常的。
请问哪位好友有J***a的学习心得分享一下,谢谢?
这个东西因人而异,有的人自学能力是非常强的,可以自己学。
像我这种,就是要跟着老师学,如果让我自己盯着书本看,半个小时估计就烦了。
那么我就分享下我的J***a学习心得。
第一 在网站上找一些教学视频,现在类似于各种编程的***教程网上信手拈来,比如各类大学,也会将自己的授课***传到学习网站上,这类网站有慕课网、中国大学MOOC,网易云课堂、还有央视都夸奖的小破站。
第二 就是跟着***学习,***中的老师讲解的非常的细致,你可以跟着老师做一些笔记,通过笔记加深对概念和知识点的理解。
最后就可以在github上面搜索一些小项目,然后看着项目来做添加一些自己的东西。
思路决定出路人的学习是无止境的,只有不断的学习,才能给自己更丰富,更开阔的思路,经过两天的学习,让我感悟到很多事情,都是有两面性的,穷则变,变则通,出路在于变通,当目前的想法不能成功,说明你的想法有可能是错的,或者是由于没有改变自己的思路或者是懒于改变自己的思路或者是根本不想改变自己的思路,成功总有方法,想成功就要找方法,而思考是一切正确策略和方法的起源,思考其实就是问与答的过程,当你做一件事情没有达到目标时,问自己一个为什么?问自己问题出在了哪里,然后自己给出答案,学会反思学会换位思考。“没有不好的孩子,只有不好的教育”,例如,在课堂中,在一日生活中孩子没有如我们所预想的那样做一些正确的事情,不能达到我们所要求的目标时,我们只能对孩子着急吗?与其对孩子发脾气,不如改变自己的教育观点理念,反思自己为什么,不能懒于改变自己的思路,就要求别人去适应自己的思路,我们何不反思自己从事情的另一个角度开始着手,可能会有意外收获,就像我们经常说的,给孩子机会孩子就会给你惊喜。从中,我还深刻的理解到一个道理,大凡世界上能做大事的人,都能把小事做细,做好,做好了每件小事逐渐积累就会发生质变,小事就会变成大事,任何一件小事只要你把它做规范了,做到位了,做透了,你就会从中发现机会,找到规律,从而成就大事,也就是说,一件事情我会做了,但做好了吗,做精了吗,一个人无论从事何种职业,都应该尽心尽责
这是一个非常好的问题,作为一名IT从业者,同时也出版过自己的J***a书籍,所以我来说说我的看法。
J***a语言的抽象程度是比较高的,所以J***a语言的初期学习难度是比较大的,如果顺利渡过了学习的初期阶段,后期的学习难度会有所下降。
J***a初学者在学习的初期,应该做好三件事,如果把这三件事做好了,通常就能够顺利渡过初期的学习障碍。第一件事是把握住J***a学习的主线,第二件事是掌握J***a的面向对象编程过程;第三件事是注重实验和总结。
初学者在学习J***a的过程中首先就要把握住学习的主线,这是非常重要的,只有把握住了学习的主线,才能有一个更好的学习体验。J***a的学习主线可以用两个概念来进行总结,一个是“类(class)”,另一个是“接口(interface)”,J***a中几乎所有的抽象概念都是围绕着两个概念展开的。所以,初学者首先就要搞清楚什么是类,什么是接口。
学习J***a的第二件事情就是掌握J***a编程的过程,做一个不太恰当的比喻,如果把抽象概念看成是“武功心法”,那么编程过程就是“具体招式”,二者之间相辅相成。J***a的编程过程可以总结为三点,分别是类的设计、对象的创建、方法的调用,几乎J***a所有的编程过程都离不开这三个步骤。
最后,学习J***a编程一定离不开实验和总结,实验不是目的,通过实验来理解概念并形成自己的编程思想才是目的,而这个过程就离不开总结,总结的目的是为了形成自己的方***,也可以把这个方***看成是“编程思想”。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!
到此,以上就是小编对于j***a语言秘密的问题就介绍到这了,希望介绍关于j***a语言秘密的4点解答对大家有用。