node.js与java
在计算历史上,1995年是疯狂的时期。 首先出现了Java,然后紧随其后的是JavaScript。 这些名字使他们看起来像是新近脱颖而出的连体双胞胎,但他们别无二致。 其中之一已编译并静态类型化; 另一个解释并动态键入。 这只是这两种截然不同的语言之间的技术差异的开端,此后由于有了Node.js,它们已转变为各种冲突过程。
如果您的年龄足够大,可以追溯到那时,您可能还记得Java的早期史诗般的高峰。 它离开了实验室,并固定了炒作仪。 每个人都将其视为一场革命,它将彻底结束对计算机的全面接管。 那个预测最终只是部分正确 。 如今,Java在Android手机,企业计算以及蓝光光盘等嵌入式世界中占主导地位。
尽管取得了所有成功,但Java从未在台式机或浏览器中建立起强大的吸引力。 人们吹捧小应用程序和基于Java的工具的强大功能,但是gunk总是把这些组合弄乱了。 服务器成为Java的最佳选择。
同时,当愚蠢的双胞胎出现时,程序员最初误以为是。 当然,随着HTML和网络在世界范围内拉动博格,JavaScript标记了几年。 但这随着AJAX改变了。 突然,哑巴双子掌权了。
然后产生了Node.js,以其速度吸引了开发人员的注意。 服务器上JavaScript不仅比任何人预期的都要快,而且通常比Java和其他选项要快。 此后,随着网页的不断发展,它对小,快速,无休止的数据请求的稳定饮食使Node.js变得更加普遍。
尽管20年前这是不可想象的,但准双绞线现在陷入了控制编程世界的战斗。 一方面是扎实的工程和建筑的深厚基础。 另一方面是简单性和普遍性。 老式的编译器驱动的Java世界是否会站稳脚跟,还是Node.js的速度和灵活性将帮助JavaScript继续吞噬其发展道路上的所有内容?
我能听到开发人员的笑声。 有些甚至可能死于心力衰竭。 是的,Java有故障和错误,但相对而言,它是直布罗陀的岩石。 对Node.js的相同信念已有很多年了。 实际上,JavaScript工作人员编写与Sun / Oracle为测试Java虚拟机而开发的回归测试几乎一样多的回归测试可能需要数十年的时间。 当您启动JVM时,您将获得由确定负责企业服务器的可靠策展人获得的20年经验。
JavaScript世界正在Swift赶上。 当整个Web的大部分都依赖JavaScript执行引擎时,需要花费不菲的开发人员大量精力来完善所有功能。 但是所有的创新都有缺点,因为新功能的扩散速度可能比开发人员基础所能吸收的速度快。 老式的开发人员经常对填充有较新的ECMAScript语法增强功能的代码感到困惑,而相同的新代码将使某些较旧的浏览器悄然崩溃。 不断提供创新的预处理器(例如CoffeeScript和JSX)对于想要这些功能的开发人员来说可能是很棒的,但是它们使我们其他人更难以打开随机文件并立即理解它。
Java具有其新功能和选项,但在大多数情况下,它是一个稳定的平台。 对于正在构建持久性的开发人员来说,这使工作变得更加轻松。
感谢Node.js,JavaScript在服务器和浏览器中找到了家。 您为其中一个编写的代码很可能在两者上以相同的方式运行。 生活中没有任何东西可以保证,但是这与计算机行业的发展息息相关。 在客户端/服务器的两面都坚持使用JavaScript比用Java再用JavaScript编写东西要容易得多,如果您决定将用Java编写的业务逻辑转移到Java中,则可能需要这样做。服务器到浏览器。 也许老板会坚持将您为浏览器构建的逻辑转移到服务器上。 在任一方向上,Node.js和JavaScript都使迁移代码变得更加容易。
Node在这个世界上的领先地位似乎一直在扩大。 最复杂的Web框架(例如React)将在最后一秒决定是在服务器还是客户端上运行代码。 有一天它将在客户端上运行,另一天它将在服务器上运行。 一些智能逻辑将根据负载或备用RAM或其他内容即时做出决定。 一些框架会将JavaScript作为执行查询的方式发送到数据库。 您的代码可能在任何地方运行,并且由于无法将明信片寄回家而变得越来越难以跟上。 只是开心一点,因为您不需要考虑细节。
Java开发人员拥有Eclipse,NetBeans或IntelliJ,这是三个与调试器,反编译器和服务器良好集成的顶级工具。 每个人都有多年的发展,忠实的用户以及充斥着插件的坚实的生态系统。
同时,大多数Node.js开发人员在命令行中输入单词,并在其喜欢的文本编辑器中编写代码。 是的,一些最佳的文本编辑器(例如Atom)具有精心制作的插件集合,这些插件几乎可以执行任何操作,但是即使那样,感觉Node.js比Eclipse还要古老。 很快,我们将用Atari游戏杆替换鼠标。
一些开发人员使用Eclipse或Visual Studio,它们都支持Node.js。 当然,对Node.js的兴趣激增意味着新工具的到来,例如IBM的Node-RED提供了吸引人的方法,但是距离像Eclipse或IntelliJ那样完整或占主导地位还有很长的路要走。
奇怪的是,开发人员似乎没有使用这些工具。 命令行应该在35年前随着Mac的到来而消失,但是没有人告诉Node.js开发人员。 选项在那里。 例如,WebStorm是JetBrains提供的可靠的商业工具,它结合了许多命令行构建工具。
当然,如果您正在寻找可编辑和处理代码的IDE,那么支持Node.js的新工具就足够了。 但是,如果您要求IDE在运行正在运行的源代码时进行编辑(例如心脏外科医师切开胸膛),那么Java工具会更强大。 都在那里,而且都是本地的。
一些较新的数据库(例如CouchDB和MongoDB)的查询是用JavaScript编写的。 将Node.js和对数据库的调用混合使用,无需进行任何换档操作,更不用说记住语法差异了。
同时,许多Java开发人员都使用SQL。 即使他们使用Java DB(以前称为Derby,一种用Java为Java开发人员编写的数据库),他们也用SQL编写查询。 您可能会认为它们只会调用Java方法,但是您错了。 您必须用SQL编写数据库代码,然后让Derby解析SQL。 SQL是一种不错的语言,但是它与Java完全不同,许多开发团队需要不同的人员来编写SQL和Java。
更糟的是,许多Java编码人员使用精心设计的库和方案将SQL查询中的数据转换为Java对象,以便将其重铸为模板。 这是一个疯狂的过程,最终非常浪费。
许多入门编程课程仍在继续使用Java,因为许多认真的程序员往往出于简单性和安全性的原因而喜欢静态类型的代码。 在编译器发现明显的错误之后,代码才变得更加严格。
但是,JavaScript正在赶上来,一些开发人员正在切换到TypeScript,这是JavaScript的静态类型超集,在吐出浏览器JavaScript堆栈中运行的某些内容之前,它会应用所有类型检查魔术。 如果您喜欢类型,那么使用JavaScript就足够了。 或者,您可能只是将模仿视为奉承的最真诚形式,并坚持使用Java,从一开始就包含静态类型。
JavaScript曾经是一种简单的语言,用于弹出不需要的警报框并再次检查表单输入。 然后,开发人员社区创建了许多不同版本的语言,可以将这些语言翻译为浏览器。 CoffeeScript人群提供了几种不同的语法,旨在满足更清洁标点的需求。 React / Vue人群将HTML和JavaScript混合在一起只是因为它更干净。 对于类型爱好者有TypeScript,对于功能语言奉献者有LiveScript。
您还会在Java世界中发现大量的创造力,但是由于某些原因,很多预处理器都无法表达这种创造力。 有许多语言(例如Kotlin,Scala和Clojure)已被转换为JVM的字节码,但是在某种程度上,它们彼此之间的区别足以使它们分开。 对于喜欢用不同方式来编写或标点代码JavaScript程序员,所有预处理器都使生活变得更加有趣。
诸如Ant和Maven之类的复杂构建工具彻底改变了Java编程。 但是只有一个问题。 您以XML编写规范,XML是一种不旨在支持编程逻辑的数据格式。 当然,用嵌套标签表示分支相对容易,但是将齿轮从Java切换到XML只是为了构建某些东西而有些烦人。 有了JavaScript,就没有切换装置。
Node.js过去具有更简单的构建。 您只需编辑代码,然后点击“运行”。 那是那时。 当Node开发人员“改善”了流程时,他们添加了预处理程序,这些预处理程序将您喜欢JavaScript子类别变成可运行的东西。 然后,Node包管理器需要找到正确的库。 在大多数情况下,这是行得通的,但有时却行不通,然后您就花时间寻找在单独的步骤中构建自己的工件的正确版本号。 而且,如果您在工件库中犯了一些错误,那么,该版本号已被拍摄,您必须再次转动里程表轮。
Java还具有一个复杂的构建过程,该过程与Node.js方法非常相似,但是它似乎并没有变得更加复杂。 现在,Maven和Ant似乎已经成为Java基础的一部分。 许多粗糙的边缘早已不复存在,并且构建工作更频繁。 如果绝对有解决构建麻烦的方法,那么这两种语言可能是相似的,但是JavaScript复杂性的Swift爆炸意味着Java必胜。
在此讲解视频中,学习一些可以改善Node开发体验的技术。
当数据库发出答案时,Java会竭尽全力将结果转换为Java对象。 开发人员将花费数小时来讨论POJO映射,Hibernate和其他工具。 配置它们可能需要数小时甚至数天。 最终,所有转换后,Java代码都会获取Java对象。 而且在配置方面,Java世界仍然坚持使用XML,甚至提供了两个主要的解析器,使开发人员有更多的理由烦恼。
如今,许多Web服务和数据库都以JSON (JavaScript的自然组成部分)返回数据。 JSON现在如此普遍和有用,以至于许多Java开发人员都使用该格式,并且许多优秀的JSON解析器也可以作为Java库使用。 但是JSON是JavaScript基础的一部分。 您不需要库。 一切都准备就绪。
Java拥有令人难以置信的工具来监视机器集群。 深入了解JVM和精心设计的分析工具可帮助您识别瓶颈和故障。 Java企业堆栈运行着地球上一些最复杂的服务器,而使用这些服务器的公司要求最好的遥测技术。 所有这些监视和调试工具都已经相当成熟,可以随时进行部署。
那里可能有一些Java小程序运行,并且我仍然维护一些Java JAR文件,可以单击它们来运行,但是在大多数情况下,桌面世界在很大程度上没有Java。 另一方面,随着浏览器占用了我们台式机的大多数角色,JavaScript继续捕获越来越多的动作。 当微软改写Office在浏览器中工作时,死定了。 如果您仍然想知道,还有一些有趣的选项,例如Electron ,可以将您的Web代码转换为独立的桌面应用程序。
Android应用程序通常是用Java编写的,并且90%的新手机都运行某些版本的Android。 许多人甚至不再使用台式机,因为电话足以应付一切。
当然会有一些混乱。 许多开发人员正在编写针对iPhone和Android上的移动浏览器的Node.js Web应用程序。 如果做得好,性能通常会足够好。
翻译自: https://www.infoworld.com/article/2883328/nodejs-vs-java-an-epic-battle-for-developer-mindshare.html
node.js与java