java框架的利与弊_Java编程的利与弊

java框架的利与弊

没有什么技术可以吹嘘保持相关性超过20年了。 但是今年,Java被评选为第五大最受欢迎的技术 ,仅被无可争议的领先者JavaScript,HTML,CSS和SQL所超越。 尽管在同一StackOverflow调查中,它在最受欢迎的列表中排名第18,但在其最可怕的排名中,它也排在了该列表的后面。 今天,我们揭露了Java的许多成功和挑战-具有标志性的蒸汽咖啡标志的古老技术,这是当今许多程序员所熟悉和喜爱的语言。

什么是Java编程:历史和影响

Java是一种通用的编程语言,它遵循面向对象的编程范例和“随处编写一次写入”方法。 Java用于桌面,Web,移动和企业应用程序。 您可以在这里找到更多关于它的信息:

Java不仅是一种语言,还是一种工具生态系统,几乎涵盖了Java开发可能需要的所有内容。 这包括:

  • Java开发工具包 (JDK)-使用该工具和标准的Notebook应用程序,您可以编写和运行/编译Java代码
  • Java Runtime Environment (JRE)-包含独立Java虚拟机,Java标准库(Java类库)和配置工具的软件分发工具
  • 集成开发环境 (IDE)-帮助您运行,编辑和编译代码的工具。 IntelliJ IDEAEclipseNetBeans是最受欢迎的

您可以在任何地方找到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,小型Web程序,它们提供了交互式元素,对于可视化和教学特别有用。 尽管它们仅用于简单的动画,但它吸引了许多程序员的注意力,并为HTML5,Flash和JavaScript的开发铺平了道路。

测试驱动的开发。 使用Java,TDD不再是实验性的实践,而是开发软件的标准方法。 2000年JUnit的引入被认为是Java的最大贡献之一。

用Java编程的好处

尽管Java 不再是Android开发的唯一官方支持语言,并且当然不是Web编程的唯一选择,但Java仍在与其他语言保持同步。 并且由于这不仅要归功于其受人尊敬的时代,所以让我们探讨一下Java必须提供的优势。

-面向对象编程

Java包含面向对象的编程 (OOP),它是一种编码概念,您不仅可以定义数据的类型及其结构,还可以定义应用于其的功能集。 这样,您的数据结构就成为一个对象,现在可以对其进行操作以在不同对象之间创建关系。

与必须使用变量和函数遵循一系列指令的另一种方法( 过程编程)相反,OOP允许您按上下文对这些变量和函数进行分组,从而对其进行标记并在每个特定对象的上下文中引用函数。

比较过程式程序设计和面向对象程序设计

为什么OOP有优势?

  • 您可以轻松地在其他程序中重用对象
  • 它通过使对象隐藏一些不容易访问的信息来防止错误
  • 它使程序更有组织性和预先计划,甚至更大的程序
  • 它提供了简单的维护和遗留代码现代化
syntax高级语言,语法简单,学习曲线温和

Java是一种高级语言,这意味着它与人类语言非常相似。 与类似于机器代码的低级语言相反,必须使用编译器或解释器转换高级语言。 这简化了开发,使语言更易于编写,阅读和维护。

用Java编写Hello World
资料来源: Java编程备忘单

Java从C ++派生了其语法(程序员使用的规则和结构集),这就是为什么您会注意到它非常类似于C代码的原因。 但是,它要简单得多,可以使初学者更快地学习该技术并更有效地编码以达到特定的结果。

Java可能不像Python那样适合初学者,但是任何对框架,包,类和对象有基本了解的开发人员都可以很快理解它。 它简单明了,类型明确,并且有着非常严格的期望,很快就会帮助您朝着正确的方向进行思考。 此外,大量免费的在线教程和课程不会让新手感到无助。

enterprise企业计算标准

企业应用程序是Java的最大资产。 它可以追溯到90年代,当时组织开始寻找非C语言的强大编程工具。Java支持大量库(任何企业系统的构建块),可帮助开发人员创建公司可能需要的任何功能。 庞大的人才库也有帮助-Java是大多数学校和大学中用于计算机编程入门的语言。 此外,由于大多数托管服务提供商都支持Java,因此其集成能力令人印象深刻。 最后但并非最不重要的一点是,Java维护成本相对较低,因为您不必依赖特定的硬件基础结构,并且可以在您可能拥有的任何类型的计算机上运行服务器。

age安全风险不足

您可能会遇到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允许您在称为多线程的过程中同时运行这些线程。

线程共享相同的内存区域,因此在它们之间进行切换只需很少的时间。 它们也是独立的,因此,如果一个线程遇到异常,则不会影响其他线程。 这对于游戏和动画繁多的程序特别有用。

多线程示例
⊕稳定和庞大的社区

由于社区,Oracle的支持以及不断在JVM上运行的应用程序和语言的聚宝盆,Java得以幸存下来达到了可敬的时代。 此外,定期发布具有新鲜有趣功能的Java新版本。

Java的开发人员社区也是无与伦比的。 StackOverflow 2018调查受访者中约有45%使用Java。 对于任何用例,它都有一个经过充分测试的库和框架的庞大生态系统。 Java很可能是开发人员在研究中遇到的最早的语言之一,因为有关Udemy的1000多种Java相关课程和Coursera的300多种语言。

Java编程的缺点

这是在用Java编写下一个项目之前要了解的缺点。

Θ支付了商业许可证

Oracle最近宣布 ,他们将从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应用。 尽管KotlinSwift发展 ,但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使您可以访问大量经过测试的库,调试器和监视工具。

这篇文章是我们“善与恶”系列的一部分。 有关最流行技术的利弊的更多信息,请参阅该系列的其他文章:

Xamarin 移动开发 的好与坏

JavaScript全栈 开发 的好与坏

Node.js Web应用程序开发 利弊

ReactJS和React Native 优缺点

Swift 编程语言 优缺点

好的和 .NET 的坏 框架程序设计

好和 Selenium 自动化测试工具 的错误

角度 编程 的好与坏

最初发表在AltexSoft技术博客 Java编程 优缺点

翻译自: https://hackernoon.com/the-good-and-the-bad-of-java-programming-eeaee8918ea

java框架的利与弊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值