java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
有些人,尤其是年轻人,在知道这一点时会睁大眼睛。Java比较老式,与现代语言相比效率低下,并且注定要失败,这基本上就是我一直听到的内容。但是真的是这样吗?
是的,Java提供的基本构造和约束是老式的,并且依赖于20年前的代码编写方式。程序设计语言不是在无菌气泡中创建的。开发人员的习惯和需求对于语言设计至关重要,而发明者试图将创新注入其中,而忽略人们将如何实际使用它却是愚蠢的。Java的第一个里程碑可追溯到1995年,尽管它的一些基础块至少在10年之前就具有远见,但很显然,在 24年后的 29 年……还不算什么。
但是,这不仅仅是时间问题。在过去的十年中,发生了很多变化。其中一些内容似乎与本主题无关,但实际上是讨论的中心。例如,廉价内存的更大可用性在大规模重新采用生产软件中的功能编程中起着核心作用。然后,这与采用反应式编程宣言有关。
可访问和可管理的云计算简化了微服务模型的概念化,当容器成为现实时,微服务模型就可以发挥生产作用。
然后,微服务模型赋予了特别适合于某些任务而对其他任务不太出色的编程语言的尊严。
它并没有就此结束。大数据带来的新挑战导致了新的任务优化的数据库系统的发明,该系统能够吸收大量数据,然后必须对其进行分析。实际上,这并不是导致新语言诞生的原因,而是对现有语言的重新思考,证明它非常适合完成此任务。
更不用说人工智能的第二青年了。
Python现在已经成为机器学习的黄金标准,但是如果您快速浏览一下Wikipedia页面,您很快就会意识到它比Java更旧,并且可以追溯到1990年!
那么R,数据分析的常见选择呢?1993年。
JavaScript吗?奇怪的是,1995年,就像Java。
二郎?1986年…
为什么这些语言不是老式的,而是Java?
因为我们改变了,并且与我们在一起,所以挑战也随之改变。
例如,Python一直是实用程序和数据处理程序的绝佳脚本语言,但通常认为它不适用于大型企业应用程序。但是,微服务通常是由小型程序和数据管道组成的,这些小型程序和定义良好的小型程序主要是功能性步骤。
JavaScript一直是使网页动态化的唯一解决方案,但是随着复杂的Web应用程序的激增,将其也带到服务器端也是合理的。
总而言之,Java之所以被认为是过时的,是因为它非常适合使用数百万行代码来构建胖的(大多是单片的)应用程序,需要大量的计划和严格的顺序,而Java则需要这样做。
尝试使用JavaScript进行同样的操作,您将很快意识到“死亡不是终点,而只是过渡”(同上)。
相关。
我经常用这个比喻来解释Java:
如果您需要建造一个火柴盒,则首先要拿10吨木材,建造一个原木,然后将其砍成火柴盒。
Java强制采用一种鼓励建立适当的类层次结构的正式,严格的方法,因此不可避免地要像白痴一样以适当的方式设置所有内容,即使是很小的任务。
就是这样。鉴于我们在上一章中已经说过的话,在Java中没有一件容易的事会很轻松。
请注意,简单并不是说易于实现,而是在体系结构方面很容易。编写复杂的算法是一项艰巨的任务,我发现在Python中更容易做到。
在这一点上,很明显,我们正在迭代相同的概念:正确的工作工具。
Java是(并且曾经是)一种非常通用的编程语言,已被用来解决各种情况下的各种类型的问题,但是随着时间的推移和挑战的变化,Java似乎越来越无法幸免。不再是专业化了-不是因为它已经发展成一种专业语言,而是因为其他语言在特定任务中的适用性强。
如果您要构建具有大量内部编排,庞大的代码库,疯狂的并行性等的大型企业平台(或至少是其中心节点),那么Java仍然是野兽。等等,是吗?
就像这条黑暗的励志名言中所解释的那样:“不要害怕未来,您不会经历很多事情。” 此时您应该大声笑...
随着年龄的增长,Java非常像开发人员。您不像十年前那样头脑清醒,但是作为交换,您更加明智,更加稳定和可靠。当然,您仍然可以学习Rust,但是它永远不会像比您小10岁的人感到正确。同样,现代化Java的竞赛也在不断地进行,当新功能问世时,您会觉得在适当的时机之后,它们已成为现实。例如,当他们第一次引入lambda时,反应不是“是的!狂欢吧!” 但更多“看在上帝的份上,你花了这么长时间吗?”
另一方面,人们没有意识到Java的最大成就不是语言本身。
规划大型软件时,仍然让我回到Java的是生态系统。Java提供了一流的优质库,可满足您在Internet上梦想的一切。
想想Spring,Akka,Tomcat-我可以说几百个-这些不是车库项目,而是非凡的成就。我并不是说这不能用其他语言来完成,而是大企业推动Java创造了使此类软件得以实现的前提条件。到达这里花了好几年,时间因素也很重要,因为处于边缘的20年对于生态系统的成熟是很长的时间。
您可以找到适用于多种语言的特殊库,但是您很快就会意识到它们是否存在,在很大程度上取决于大型公司是否认可该项目。
例如,找到适用于Python的好的机器学习库非常容易,而且您不能说Google在其中没有发挥作用。借助Facebook,您可以使用React.js(JavaScript)开发出色的Web应用程序。
除了前面提到的庞大的生态系统之外,Java的最大成就是JVM。虽然该语言可能会因年龄而受到影响,但根据我们普通人可以理解的内容,JVM看起来很健康。
现在,有人可能会说容器化消除了对JVM的需求,从某种意义上讲,就是这种情况。实际上,对JVM的最初需求是允许程序在任何OS上执行,但是容器在这方面改变了一切,因为容器提供了可以在任何地方(在纸上)执行的OS 的模拟。
但是JVM不仅限于此。内存管理和垃圾回收,安全性,基本的编程库以及调试和检查功能-所有这些使JVM变得非常安全,舒适。
“但是JVM太重而且很慢!” 这是我收到的经典回推,尽管其内存占用量和引导时间在一定程度上是正确的(这使其非常不适合面向任务的程序),但是从性能的角度来看,最近20年发生了一些事情或者。
以下是使用流行算法进行的一些基准比较:
· Python 3与 java
· Node js与 java
· GO与 java
· Erlang HiPE与 java
尽管由于算法只是故事的一部分,所以这种基准测试不能使所涉及的语言公平化,但是您可以清楚地知道JVM绝对不是拖到坟墓场的病态大象。
我有点同意,尽管JVM仍然运行良好,但Java仍在努力使其在阳光下保持位置。Oracle知道这一点,并正在努力推动Java再次变得出色,尽管这提供了一些出色的结果,但没有人真的认为这会停止老化过程。这不是一件坏事。
JVM是创建更现代,更有效的语言的平台。公平地说,并不多,但有些非常成功。
这就是重点。国王没有死,但那咳嗽听起来也不好。然而,它的后代在这里继承了它的遗产。
· Scala 我的第二次恋爱。一种非常强大的语言,是静态类型化,面向对象和功能性的。尽管仍未被广泛采用,但它是目前掌握该技术最经济实惠的技能之一。通常是由 Akka actor模型实现丰富的,它是为 Play框架提供动力的语言;
· Clojure 它是Lisp语言的一种非常受欢迎的方言,并以并发计算中的出色功能而闻名,通常用于处理庞大的数据集。
· Groovy 我通常将动态编程和脚本语言称为Java语言(但是我确信创建者不同意)。Groovy被广泛用于脚本编写目的,也是为 Grails框架提供支持的语言。
· Kotlin 最后但并非最不重要的一点是, JetBrains的静态类型化,面向对象和功能性语言现已成为Google Android开发的首选工具。
而且我们并不是在谈论Java的扩展。这些是全新的编程语言,肯定可以借鉴Java的知识,但最重要的是,它们充分利用了JVM和Java生态系统。
Java编程语言不会很快消失。
不仅是因为使用它构建了大量软件,而且还因为您是否同意它的所有缺陷,它仍然是新项目的非常合适且经过实践检验的选择。
当然,它的角色发生了变化。从您唯一需要的东西来看,它现在是图片的一幅,但是很牢固。
即使考虑到我对Scala的致命吸引力,也必须说Oracle和社区在改善Java方面做得不错,而且我们所有人都在享受这种进步的好处。新功能的质量可以很好地解决它们的回味,比我们想象中的时间表晚了一点。
毕竟,编程语言发展的缓慢进步可能是放弃的标志,也可能是成功的标志。当您的语言被如此大规模地使用时,重大更改应引起重视。您进行的每个步骤都需要考虑会产生什么影响,以及它如何影响向后兼容性。不能掉以轻心。
我以为我已经在该领域工作了很长时间,以了解它的某些特质。当然,在过去的十年中,这个领域的发展加速了,但是进步主要来自于整体。
当这种情况发生时,您可能会感觉到一切都会改变。这些进步的成堆来自他们过度激动的思想家的工作组,他们树立并大喊大叫。但是,当他们踢起的尘埃落定时,那一刻,您可以清楚地看到成就的真正本质,并从中合理地发挥最大的作用。
就像我说的那样,Java并没有走到任何地方,但是以我的诚实观点,它要想在这些成就中发挥最大作用的努力还远远没有赢。
我对所有Java爱好者或讨厌者的建议是:享受这个奇妙的技术时代所提供的多样性!
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
¥399.00
¥699.00
¥299.00
¥399.00