Nodejs pk Java 第1回合:初次交锋

学习一门新语言,最好最快的方法就是与现在所掌握的语言对比着思考。

公司最近有个新项目,要用Nodejs开发,现在Nodejs已经很成熟了,可以试试。又开始重新研究,考虑了一下,可以写一系列PK文章,可以帮助刚刚接触Nodejs的朋友,轻松入门。

做了很多年Java开发的,就用Nodejs与Java做对比,来个PK。写此文章不为分出谁胜谁负,只是为了学习。两种语言,各有特色,各有特点。

环境搭建:Nodejs 胜 Java

Nodejs下载一个官方的安装包,一步一步安装就可以了,命令行就可以使用Nodejs了。Java的安装,需要安装Jdk和Jre,还需要配置环境变量。虽然不复杂,但是对于初学者,还是有些难度。

所以我认为Nodejs的环境搭建要比Java简单。

学习难度:Nodejs 胜 Java

Nodejs的语言基础是JavaScript,这门语言出来的也很早,做过web应用的同学多少都会点。所以学习难度不高,但是想学好,还是需要下一些功夫。

想学好Java,要学的东西特别多,先从J2se开始,再就是J2ee,再就是各种框架,数据库,服务器,前端的知识,都要会点。因此我喜欢把Java说成编程里面的九阳神功,内功。Java是一门很优秀的语言,建议没有学过的朋友,有机会可以学学。 学会了Java以后,再学习其他的任何语言,都比较简单。

Java比较综合,学习曲线比Nodejs长,在学习上,Nodejs胜。

项目支持:Java 胜 Nodejs

Nodejs和Java都可以做Web项目,也可以做一些提供服务的项目。Nodejs说是对并发支持的挺好,其实他是单线程,队列模式,没有多线程一说,因此不存在并发的问题。Java一直是企业级应用开发的领军者,无疑问适合场景要比Nodejs更多,多线程,高并发,都支持的很好。

项目支持上各自有特点,适合不同场景的项目。但是目前大型项目,多采用Java开发,因此项目支持上,Java胜。

开源组件:Java 胜 Nodejs

Nodejs里面组件,类似Java里面的jar包,都是直接放在项目中引用。 Nodejs和Java都有很多开源的组件,Java发展的时间比较早,所以Nodejs的目前没有Java的多。但是Nodejs日常开发的一些组件,都已经有了,还在不断的扩展,将来应该会有更多。

Nodejs中的组件叫做node_module,都是由js代码组成。有一个很好用的工具,npm,类似Java中的Maven,方便管理引用。项目中写一个配置文件,组件名称与版本号使用key-value的格式,npm install一下,就都下载好了。Nodejs中的需要引入组件的配置文件是json格式,叫做package.json,Java中的Maven配置文件是xml格式,叫做pom.xml。

Nodejs的组件下载下来都是源代码,方便直接查看阅读。Java中的jar包下载下来是class文件,如果需要查看源代码,需要单独下载src。这一点,Nodejs比Java要方便一些。

运行环境:Nodejs 胜 Java

Java的Web项目运行环境需要单独安装环境,如tomcat,jetty,jboss等等,常用的是tomcat。Nodejs的运行环境就是Node,无需安装其他软件即可运行。

这一点便捷性上,Nodejs胜。

开发工具:Nodejs 平 Java

Nodejs现在有支持很好的工具,比如Webstorm,sublime2,aptana等等,反正很多。Java就不用说了,常用的有Eclipse、IntelliJ IDEA等等。

工具都支持的很好,打成平手。

好了,第1回合就pk到这里,后面就开始使用实际的项目做对比了。

时间: 2024-10-26 20:16:41

Nodejs pk Java 第1回合:初次交锋的相关文章

Nodejs与Java通用AES加解密

一.nodejs加解密工具类: /** * AES util */ const CryptoJS = require('crypto-js') export const AES = { //加密 encode: (params) => { let { data, param, key } = params let result = JSON.parse(JSON.stringify(data)) param.forEach(ele => { let data = result[ele] key

nodejs和java交互 AES-128-CBC加密解密

var crypto = require('crypto');const IV = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);/** * aes 128 cbc加密 PKCS5Padding填充 * @param data 原始数据 * @param key 密钥 设备AccessCode前16个字符 * @return

从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs

[突然领悟] 今天看了一遍reactjs,突然发现和自己一直用的freemarker的宏十分相似, 突然领悟了很多前端吊炸天的概念,框架,特写此文,欢迎批评指正. [nodejs] 官网:https://nodejs.org/ 简介:对前端来说极其重要的一个"框架",简直可以说是开天辟地 类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义,做前端的没用过nodejs都不好意思说自己是前端, 做后端的没听过nodejs,或者说不出nodejs和java的优缺点,也不是

支撑Java NIO 与 NodeJS的底层技术

支撑Java NIO 与 NodeJS的底层技术 众所周知在近几个版本的Java中增加了一些对Java NIO.NIO2的支持,与此同时NodeJS技术栈中最为人称道的优势之一就是其高性能IO,那么我们今天要讨论的话题就是支撑这些技术的底层技术. 开始之前先要提出的一个问题是: 为什么NodeJS和Java NIO2没有在更早的时间出现? 答案:个人认为是底层的支撑技术还不成熟. 那么,底层技术指的是什么呢?对的,我想很多人已经猜到,是操作系统技术.本文提出的两个概念Java NIO2和Node

支撑 Java NIO 与 NodeJS 的底层技术

众所周知在近几个版本的Java中增加了一些对Java NIO.NIO2的支持,与此同时NodeJS技术栈中最为人称道的优势之一就是其高性能IO,那么我们今天要讨论的话题就是支撑这些技术的底层技术. 开始之前先要提出的一个问题是: 为什么NodeJS和Java NIO2没有在更早的时间出现? 答案:个人认为是底层的支撑技术还不成熟. 那么,底层技术指的是什么呢?对的,我想很多人已经猜到,是操作系统技术.本文提出的两个概念Java NIO2和NodeJS无一例外都是用户态技术或者说是应用层技术,而这

Java Annotation入门

Java Annotation入门作者:cleverpig 版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原 文:[http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html]http://www.matrix.org.cn/resource/arti

nodejs渲染模板

为什么要用nodejs来渲染? 之前前端的任务就是用HTML+CSS 来高保真的还原UI所设计原图,偶尔会使用少量的jq来对页面添加一些特效,页面还要交付给后端开发人员进行数据填充(php jsp)等模板语言,前后端依赖严重,几乎出现任何问题是只有前后端配合才能解决,后来的前后端分离,也就是前后端只用json来交流,前端通过使用ajax来进行数据填充,但是ajax的使用不利于SEO优化和首屏渲染,会造成额外的流量开销(主要在移动端). 我所设想的是nodejs只负责渲染页面,数据和后台逻辑还是由

NodeJS的代码调试和性能调优

NodeJS 自 2009 年显露人间,到现在已经六个年头了,由于各种原因,中间派生出了个兄弟,叫做 iojs,最近兄弟继续合体,衍生出了 nodejs4.0 版本,这东西算是 nodejs new 1.0 版本,原班人马都统一到一个战线上.我没有太关注 nodejs 背后的开发,但一直是它的忠实使用者,通读了 v4.1.2 的 文档,感觉从开发者角度去看,也没啥大的变化,所以这两个兄弟分开这么久,主要是在底层内建模块上做改造,上层建筑尚未有大的变更,具体可以看 这篇文章. 如果你一直用着 no

flex+java 项目创建 和 例子

我是一个java开发的,初次接触flex ,主要就是想研究一下flex怎么调用java.刚整通了 一个,下面总结一下: 我使用的是myeclipse6.0.1.flex builder3.0 1.创建flex项目:file -> new -> flex project 如下图 Application type 中选 第一个 web application, Server technology 中选择 j2ee, 勾选user remote object access service (否则无法