Java开发者结合Node.js编程入门教程

时间:2021-05-20

首先, 我必须得承认,作为一个有着十多年开发经验的java开发者,我已经形成了解决绝大部分问题的固有套路,尽管它们很多时候显得笨重和繁琐。 比如说如果要读取一个文件,那应该就是初始化一个BufferedReader 实例并传入一个FileReader,这几乎是顺理成章的,我在很多自认为算得上“企业级”的项目中编写这样的代码并且很享受这个过程,可以说我就是一个对其他语言不屑一顾的java脑残粉。

  如果你正在阅读这篇博文,你可能已经陷入了我多年前早就陷入的一个误区,作为一名合格的开发人员应该不断地学习新的技术并且根据实际工作需求选用适 当的技术。尽管我一直在变老并且有朝一日可能会厌烦了java。但是我现在真的发现了一个激动人心的新东西,node.js对于我就像一个儿童得到一个新 奇的玩具,在这篇博文中,我将先向您展示如何使用Java EE创建一个简单的Rest服务来读取 MongoDB数据库。然后我会用node.js来实现相同的功能,你会更容易了解到这种新的开发语言的激动人心之处。

从基础开始——什么是Node.js?

  首先,我要说明一点,Node.js不是那种“新潮时尚”,只有“潮人”才使用的语言。虽然它是本着这种认知开始,但是我很高兴的报告给大 家,Node.js是一种成熟的语言——并且在当下这个互联网时代,它已经找到了其自己的方式进入大型企业,支撑起一些最高流量的网站。Node.js是 你技能储备当中的一个非常实用的工具,在构建稳定、安全和高性能的代码上,其便捷度会令你大吃一惊。

  言而总之,Node是一种针对服务器端活动的语言。它使用了Javascript语言,并且有非常多的库可用,比如npm模型。你可以把那些npm 模型比作Java中的.jar包。当你需要一部分功能,并且不喜欢自己全部编写这部分代码,极有可能在npm模型中已经提供了你正在寻找的特性。

  Node应用程序通常执行时需要实现效率最大化利用非阻塞 I/O 和异步事件。对于Java开发者来讲需要知道的一点是Node应用运行单线程中。然而,后端节点代码使用多个线程进行操作,如网络和文件访问。鉴于此,Node对于那些需要实时经验的应用是完美的选择。

继续——IDE支持

  你可能会像我一样,在IDE中“生存”和“呼吸”,这可能源于Java实在是太罗嗦了,需要我们在软件开发过程中编写恒定的代码来完成功能。一旦我们找到 了代码完成的好处,我们慢慢学会了使用 IDE 进行文件管理、 调试和其他非常有用的功能。可以这样说,我喜欢使用一款IDE并且在使用Nodeb工作时继续使用它。下面是当前最为第一批支持Node的IDE:

1.Eclipse——这应该很容易上手当你在Java中已经使用它。仅需要安装Node.js插件即可。
2.JetBrains IntelliJ IDEA——一款非常流行的商业化的IDE。目前为止,这是我最喜欢的IDE。
3.Microsoft Visual Studio——是的,你没看错。Node已经成长到微软在Visual Studio添加了对其的原生支持。这个实现非常稳定,并且VS是我第二喜欢的IDE。说来也怪,我使用VS仅仅用作一些基础的Node项目。
4.CodeEnvy——一款基于web的IDE
5.Cloud9——一款基于web的IDE
6.SublimeText 2——没有多余装饰的文本编辑器,由于其轻量级,在开发者中的知名度越来越高。

这是我工作在Node基础项目上的最喜欢的几款IDE。仅仅做个举例。

从一个范例开始

  在这篇博文的剩下部分里,我们将要用Java EE和Node.js结合起来创建一个简单的REST服务。这个REST服务将会简单的从MongoDB数据库里面读取信息并且返回这些结果给请求者。而 关于Java应用服务器和MongoDB数据库的安装和配置则不在本文的讨论范围之中。

创建我们的Java应用

  第一步:配置pom.xml文件

  我们把这个范例叫做restexample ,我将会使用JBoss EAP应用服务器。第一件我们要做的事情就是为使用Maven构建系统的依赖管理来配置我们的pom.xml文件。下面就是包含了我们这个restexample 应用里面所需要的依赖的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://mon/models目录的beer.json文件,滚动到这个文件的最后,将会看到如下模型:

{ "name": "beer", "base": "PersistedModel", "properties": { "name": { "type": "string", "required": true }, "description": { "type": "string", "required": true } }, "validations": [], "relations": {}, "acls": [], "methods": []}

这里可以看到,我们创建了一个模型,同时,name和description属性已经赋予了这个模型.

在/server/model-config.js文件中,可以注意到,文件中包含一些额外的字段,包括public和datasource.其中public域指定我们希望通过一个REST网络服务将此模型暴露给外部.datasource域则指定这个模型的CRUD操作将会用到的数据源.

"beer": { "dataSource": "myMongo", "public": true }

步骤8:沉浸在看到beers的喜悦中

  祝贺!你已经创建了第一个Node.js应用程序,其中包含可以获取beer信息的REST网络服务.最后,我们需要做的就是部署这个应用程序.

  庆幸的是,部署是已经很容易的事情.可以通过在应用程序根目录执行如下命令来完成:

$ slc run

只要应用程序一运行,就可以通过浏览器转到如下的URL来确认部署是否成功:

http://0.0.0.0:3000/api/beers

相当酷,是不是?

LoopBack同时也包含了一个允许查看应用程序所有可用服务的页面,包括Beer模型和我们创建的REST服务,将浏览器指向如下的URL即可查看:

http://0.0.0.0:3000/explorer

页面加载成功后,你会看到下面的界面,我们已经创建了beers节点作为博客的一部分,我把/beers端点进行高亮显示了:

你可以点击/beers来展开可供调用的API,你可以操作并测试一下,如下图所示:

结论

 在这篇博文中,我展示了如何使用java EE 去创建一个rest服务,这个服务能够返回Pabst啤酒公司的啤酒产品清单数据。 之后我又使用node.js以及基于node.js的loopback框架使用很少的代码实现了相同功能的rest服务。 最重要的是,LoopBack API 还对beer实体的增删查改提供了默认的实现,使得我们不用再写一行代码就得到了一个具有完整增删查改功能的rest服务。

下面的清单对博文中涉及的javaEE和node.js各自特性进行一个对比:

Feature

Java EE

Node.js

完善的IDE支持

Yes, 多种IDE供选择,包括 Eclipse, Sublime and Idea

Yes,多种IDE供选择,Visual Studio, Eclipse, Sublime

依赖管理

Maven

NPM

有企业级项目采用

Yes

Yes

庞大的组件生态系统

Yes

Yes

需要 JVM

Yes

No

通用开发框架

Spring, JEE

Express

数据库支持

Yes

Yes

ORM 框架

Yes

Yes

测试框架

Yes

Yes

接下来的内容?

即将发布的Node v0.12 将带来至少8个激动人心的新特性,它们会是什么呢?访问 “What's New in Node.js v0.12” 页面了解更多.
对Node相关的培训和认证感兴趣? StrongLoop 公司提供各种服务满足您的需求。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章