没有什么技术可以吹嘘保持超过20年的相关性。 但是今年,Java被评选为最受欢迎的第五种技术 ,只有无可争议的领先者JavaScript,HTML,CSS和SQL才使Java黯然失色。 尽管在同一StackOverflow调查中,它在最受欢迎的列表中排名第18,但在其最可怕的排名中它也排在了该列表的后面。 今天,我们揭露了Java的许多成功和挑战-带有标志性的蒸汽咖啡标志的古老技术,这是当今许多程序员所熟悉和喜爱的语言。
什么是Java编程:历史和影响
Java是一种通用的编程语言,它遵循面向对象的编程范例和“随处编写一次写入”方法。 Java用于桌面,Web,移动和企业应用程序。 您可以在这里找到更多关于它的信息:
Java不仅是一种语言,还是一种工具生态系统,几乎涵盖了Java开发可能需要的所有内容。 这包括:
- Java开发工具包 (JDK)-使用该工具和标准的Notebook应用程序,您可以编写和运行/编译Java代码
- Java运行时环境 (JRE)-包含独立Java虚拟机,Java标准库(Java类库)和配置工具的软件分发工具
- 集成开发环境 (IDE)-帮助您运行,编辑和编译代码的工具。 IntelliJ IDEA , Eclipse和NetBeans是最受欢迎的
您可以在任何地方找到Java。 这是Android开发的主要语言。 您将在Web应用程序,政府网站以及Hadoop和Apache Storm等大数据技术中找到它。 对于科学项目,尤其是自然语言处理,它也是一个经典的选择。 即使在智能手机时代之前, Java仍占据着移动设备的主导地位-2000年代初的第一批手机游戏主要是用Java制作的。 因此,可以肯定地说,由于Java的悠久历史,它已经在编程名人堂中赢得了自己的位置。 TIOBE索引是世界上最著名的编程排名之一,它使用搜索引擎结果进行计算。 尽管Go和Python越来越流行,但十多年来,Java 一直居榜首 。
截至2018年8月的TIOBE指数数据
这一切始于1990年代初,当时Sun Microsystems团队开始开发更好的C ++版本-易于移植,对新手友好,并具有自动内存管理功能。 研究结果创造了一种全新的语言,这个名字是从会议室里大喊大叫的其他几十个语言中选出来的。 如今,热气腾腾的咖啡杯的徽标已成为程序设计中无声的,公认的符号。 而且,现在尚不清楚先发生什么—程序员对咖啡因的痴迷或与Java(咖啡的代名词)的联系。
Java徽标的演变
这些只是Java引入编程领域的一些变化:
灵活性。 Java证明了C的过程性,手动分配且与平台相关的代码并非一帆风顺。 得益于Java,更多的人开始采用面向对象的编程,这是当今普遍接受的做法。
小程序 。 在JavaScript之前的几年中,Java引入了applet(小型应用程序),它们提供了交互式元素,对可视化和教学特别有用。 尽管它们只用于简单的动画,但它吸引了许多程序员的注意力,并为HTML5,Flash和JavaScript的开发铺平了道路。
测试驱动的开发。 使用Java,TDD不再是实验性的实践,而是开发软件的标准方法。 2000年JUnit的引入被认为是Java的最大贡献之一。
用Java编程的好处
尽管Java 不再是Android开发的唯一官方支持语言,而且当然不是Web编程的唯一选择,但Java仍在与其他语言保持同步。 并且由于这不仅要归功于其受人尊敬的时代,所以让我们探讨一下Java必须提供的优势。
oriented面向对象编程
Java包含面向对象的程序设计 (OOP),它是一种编码概念,您不仅可以定义数据的类型及其结构,还可以定义应用于其的功能集。 这样,您的数据结构就成为一个对象,现在可以对其进行操作以在不同对象之间创建关系。
与必须使用变量和函数遵循一系列指令的另一种方法( 过程编程)相反,OOP允许您按上下文对这些变量和函数进行分组,从而对其进行标记并在每个特定对象的上下文中引用函数。
比较过程编程和面向对象编程
为什么OOP有优势?
- 您可以轻松地在其他程序中重用对象
- 它通过使对象隐藏一些不容易访问的信息来防止错误
- 它使程序更加有组织和预先计划,甚至更大的程序
- 它提供了简单的维护和遗留代码现代化
syntax高级语言,语法简单,学习曲线温和
Java是一种高级语言,这意味着它与人类语言非常相似。 与类似于机器代码的低级语言相反,必须使用编译器或解释器转换高级语言。 这简化了开发,使语言更易于编写,阅读和维护。
用Java编写Hello World
资料来源: Java编程备忘单
Java从C ++派生其语法(程序员使用的规则和结构集),这就是为什么您会注意到它与C代码非常相似的原因。 但是,它要简单得多,可以使初学者更快地学习该技术,并更有效地编码以获得特定结果。
Java可能不像Python那样适合初学者,但是任何对框架,软件包,类和对象有基本了解的开发人员都可以很快理解它。 它简单明了,类型明确,并且有着非常严格的期望,很快就会帮助您朝着正确的方向进行思考。 此外,大量免费的在线教程和课程不会让新手感到无助。
enterprise企业计算标准
企业应用程序是Java的最大资产。 它可以追溯到90年代,当时组织开始寻找非C语言的强大编程工具。Java支持大量库(任何企业系统的构建块),可帮助开发人员创建公司可能需要的任何功能。 庞大的人才库也有帮助-Java是大多数学校和大学中用于计算机编程入门的语言。 此外,由于大多数托管服务提供商都支持Java,因此其集成能力令人印象深刻。 最后但并非最不重要的一点是,由于不需要依赖特定的硬件基础结构并且可以在可能拥有的任何类型的计算机上运行服务器,因此Java维护成本相对较低。
of安全风险不足
您可能会遇到Java是一种安全语言的说法,但事实并非完全如此。 该语言本身并不能保护您免受漏洞的侵害,但是它的某些功能可以使您免受常见的安全漏洞的侵害。 首先,与C相比,Java没有指针。 指针是存储另一个值的内存地址的对象,该值可能导致未经授权的内存访问。 其次,它具有一个Security Manager ,这是为每个应用程序创建的安全策略,您可以在其中指定访问规则。 这使您可以在“沙盒”中运行Java应用程序,从而消除了遭受伤害的风险。
⊕平台无关性(在任何地方运行一次写入)
随处编写一次写入(WORA)是Sun Microsystems引入的一种流行的编程流行语,用于描述Java的跨平台功能。 这意味着您可以在Windows上创建一个Java程序,将其编译为字节码,然后在支持Java虚拟机(JVM)的任何其他平台上运行该应用程序。 在这种情况下,JVM充当代码和硬件之间的抽象级别。
WORA方法如何在Java中工作
所有主要操作系统(包括Windows,Mac OS和Linux)都支持JVM。 而且,除非您编写的程序主要依赖于特定于平台的功能和UI,否则您可以共享(也许不是全部)共享,但是可以共享很大一部分字节码。
分布式语言,便于远程协作
Java被设计为一种分布式语言,这意味着它具有一种集成的机制,可以在多台计算机之间共享数据和程序,从而提高性能和效率。
分布式计算与并行计算
与其他语言(必须使用外部API进行分发)不同,Java是其核心技术。 特定于Java的分布式计算方法称为远程方法调用 (RMI)。 使用RMI,您可以将Java的所有好处(例如安全性,平台独立性和面向对象的编程)带到分布式计算中。 除此之外,它还支持套接字编程和CORBA的分发方法,以在用不同语言编写的程序之间共享对象。
⊕自动内存管理
由于自动内存管理(AMM)(也用于Swift编程语言 )和垃圾回收(一种自动处理内存分配和释放的应用程序),Java开发人员不必担心手动编写用于内存管理任务的代码。 这到底是什么意思?
程序的有效性直接与内存相关联-并且内存有限。 通过将语言与手动管理结合使用,开发人员可能会忘记分配内存,从而导致内存占用量增加和滞后。 垃圾收集器可以找到程序不再引用的对象并将其删除。 尽管它影响程序的CPU,但是您可以通过智能优化和调整来减少或阻止它。
⊕多线程
在编程中,线程是最小的处理单元。 为了最大程度地利用CPU时间,Java允许您在称为多线程的过程中同时运行这些线程。
线程共享相同的内存区域,因此在它们之间进行切换只需很少的时间。 它们也是独立的,因此,如果一个线程面临异常,则不会影响其他线程。 这对于游戏和繁重的动画程序特别有用。
多线程示例
⊕稳定和庞大的社区
由于社区,甲骨文的支持以及不断在JVM上运行的应用程序和语言的聚宝盆,Java得以幸存下来达到了可敬的时代。 此外,定期发布具有新鲜有趣功能的Java新版本。
Java的开发人员社区也是无与伦比的。 StackOverflow 2018调查受访者中约有45%使用Java。 对于任何用例,它都有一个经过充分测试的库和框架的庞大生态系统。 Java最有可能成为开发人员在研究中遇到的最早的语言之一,因为有关Udemy的1000多种与Java相关的课程和Coursera的300多种有关Java的课程。
Java编程的缺点
这是在用Java编写下一个项目之前要了解的缺点。
Θ支付了商业许可证
甲骨文最近宣布 ,他们将从2019年开始对Java Standard Edition 8进行“商业,商业或生产”使用收费。要获取所有新更新和错误修复,您需要按用户数量或每个处理器付费。
今天,Java的当前版本是免费的,可以重新分发以用于通用计算。 为了应对变化,每家公司都必须评估他们使用了多少Java,如果价格上涨可能会带来很大痛苦,则寻求替代技术。
Θ表现不佳
由于虚拟机的编译和抽象级别,任何高级语言都必须处理较差的性能。 但是,这并不是Java经常受到批评的唯一原因。 使用垃圾收集器是一项有用的功能,如果占用了20%以上的CPU时间,很不幸会导致严重的性能问题。 错误的缓存配置也会导致过多的内存和垃圾回收使用。 当多个线程试图访问同一资源时,还会发生线程死锁,并且-每个Java开发人员的噩梦-内存不足错误。 尽管可以通过熟练的计划来防止这些问题中的每一个,但它们的确会加总并可能造成不同程度的损坏。
Θ远离桌面的原始外观
为了创建程序的图形用户界面(GUI),开发人员使用不同的特定于语言的工具。 因此,对于Android应用程序,可以使用Android Studio来帮助创建外观原生的应用程序。 但是,在桌面UI方面,Java明显缺乏。
Java程序员可以选择一些GUI生成器:Swing,SWT,JavaFX和JSF是最受欢迎的。 Swing是旧的但可靠的,跨平台的,并且已经集成在包括Eclipse和NetBeans在内的各种Java IDE中。 但是除非您使用模板,否则您会注意到界面不一致。 SWT使用本机组件,但不适用于复杂的UI。 JavaFX干净整洁,外观现代,但是还不是很成熟。 总体而言,为Java上的GUI构建选择合适的对象需要额外的研究。
Θ详细代码和复杂代码
当代码冗长时,意味着它使用了太多的单词。 当您尝试理解该语言时,这似乎是一个优势,但冗长而复杂的句子会使代码的可读性和可扫描性降低。 通过尝试模仿英语,许多高级语言往往会产生太多干扰。 Java的创建旨在降低无法接近的C ++的强度,它迫使程序员准确键入其含义,这使该语言对非专家而言更加透明,但不幸的是,其紧凑性较低。
如果将Java与它的竞争对手Python进行比较,我们可以看到Python代码显示的清晰程度:它不需要分号; 使用“ and”,“ or”和“ not”作为运算符,而不是Java的“ &&”,“ ||”和“!”; 并且通常带有较少的钟声和口哨声,例如括号或花括号。
Java vs Python代码
资料来源: reddit.com/r/ProgrammerHumor
结论:Java在哪里使用?
大多数组织以一种或另一种方式使用Java。 大量的用例使这些应用程序几乎不可见,这就是为什么经常提出“在哪里使用Java”的问题。 完成我们的概述,让我们看看Java可以覆盖哪些域:
Android应用。 尽管Kotlin迅速发展 ,但Java仍然是Android应用程序的事实语言,它自动将一大批Java开发人员转变为Android程序员。 尽管Android使用Android SDK而不是JDK,但代码仍是用Java编写的。
软件产品。 除了已经提到的Hadoop和Apache Storm外,Java还用于创建Eclipse,OpenOffice,Gmail,Atlassian等。
金融计划。 作为金融业最需要的语言技能之一,Java在服务器端和客户端均用于构建可靠,快速和简单的网站。 它也是数据模拟和建模的首选语言。
销售点系统。 许多企业使用Java来创建PoS系统,因为它们通常需要平台独立性和庞大的人才库。
交易申请。 Murex是一种流行的用于前后连接的银行管理程序,用Java编写。
大数据程序。 Hadoop用Java编写。 Scala,Kafka和Spark使用JVM。 此外,Java使您可以访问大量经过测试的库,调试器和监视工具。