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 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,小型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框架的利与弊

java框架的利与弊_Java编程的利与弊相关推荐

  1. java 框架用来做什么_Java框架(一)——什么是框架?

    随着Java面向对象语言的流行以及多层架构应用的出现,使得应用程序的可复用性得到了大大的提高,框架这个东西也在应用程序中开始出现,并得到了广泛的使用.那么什么是框架呢?还有Java的框架都有什么呢?我 ...

  2. java什么是反射 代码说明_java编程中,常提到的反射代码指的是什么?

    展开全部 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态e5a48de588b662616964757a686964616f31333335326232或行 ...

  3. java框架013——Spring AOP面向切面编程

    一.Spring AOP简介 AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编 ...

  4. java 结果用长整数型表示_java 编程 输入正整数n,计算n!结果用长整型数表示

    题目: java 编程 输入正整数n,计算n!结果用长整型数表示 解答: import java.awt.*; import java.awt.event.*; class Test implemen ...

  5. java题兔子第三个月生_JAVA编程之古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子...

    问题是这样的:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子, 假如兔子都不死,问每个月的兔子总数为多少? 这个问题相信大家已经不在陌生了.很多博 ...

  6. java与c语言哪个好学_Java编程和C语言哪个好学

    原标题:Java编程和C语言哪个好学 学哪种编程语言好?计算机编程语言非常多,诸如Java.C.C++.PHP等,很多人在选择的时候都会觉得头大.到底学哪种编程语言好? 很多人都拿Java和c相比较, ...

  7. java计算两个月份差_Java编程实现计算两个日期的月份差实例代码

    本文实例主要实现计算两个日期的月份差,具体如下: package com.forezp.util; import org.joda.time.DateTime; import org.joda.tim ...

  8. java怎么实现试卷预览_Java编程基础期末考试试卷模板(A)闭卷含答案.doc

    编号:LNJD-PR08-RE32班 级学 号姓 名 辽宁机电职业技术学院 2015 - 2016 学年第 一 学期期末考试题 编号:LNJD-PR08-RE32 班 级 学 号 姓 名 装 使用班级 ...

  9. java和c语言哪个简单_Java编程和C语言哪个好学

    学哪种编程语言好?计算机编程语言非常多,诸如Java.C.C++.PHP等,很多人在选择的时候都会觉得头大.到底学哪种编程语言好? 很多人都拿Java和c相比较,那么今天小编就来先说说我的个人理解吧, ...

最新文章

  1. 2022-2028中国快时尚服装市场竞争及发展前景预测报告
  2. python判断正确错误_第16天:Python 错误和异常
  3. NYOJ 44 字串和
  4. W3C标准的理解(2015.3.7)(陆续更新中)
  5. [vue] 什么是双向绑定?原理是什么?
  6. Linux游戏开发包 ClanLib 2.1.0 发布
  7. attachEvent与addEventlistener兼容性
  8. 中俄巡护员聚东北虎栖息地切磋巡护技艺
  9. 奥斯汀大学计算机专业怎么样,德克萨斯大学奥斯汀分校计算机工程排名
  10. Markdown必备,Lsky-pro图床配置
  11. 中国人工智能学会通讯——搜狗搜索:从搜索到问答 1.2 搜狗汪仔——具备问答能力的机器人...
  12. 高效工具-requirement生成和配置
  13. 计算机运行内存和显卡内存不足,系统提示显卡内存不足怎么办?-解决系统提示显卡内存不足的方法 - 河东软件园...
  14. 有所精,有所知,有所思
  15. GD32VF103_CAN发送
  16. 目 录 -- 项目管理知识体系指南(PMBOK指南)(第五版)
  17. powerquery分组,PowerQuery:如何连接分组值?
  18. 股票投资 策略(收集)
  19. 什么是人工智能数据采集?
  20. SkeyeARS 超高清 4K、8K 直播全景视频客户端解决方案

热门文章

  1. 服务器硬盘7200转和15000,机械硬盘是不是转速参数越高就越好?看完本文你就不这么觉得了...
  2. 女友想买个手机!我用Python做了个比价机器人了!
  3. 数据分析必备的43个 Excel 函数!
  4. 什么是私域电商?与公域电商的区别
  5. Java设计模式9,模板方法模式
  6. 单反相机哪个牌子好?入门单反相机推荐?佳能单反相机推荐
  7. 计算机网络西京学院,计算机网络阶段性测试试题-西京学院精品课程网.doc
  8. 计算机蓝屏代码c2,如何解决Win8电脑出现蓝屏故障0x000000c2的问题?
  9. 跟我学SharePoint 2013视频培训课程——理解SharePoint网站的体系结构(3)
  10. java阿里云邮件推送接口API使用