首先,
我必须得承认,作为一个有着十多年开发经验的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:
这是我工作在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://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>restexample</groupId> <artifactId>restexample</artifactId> <packaging>war</packaging> <version>1.0</version> <name>restexample</name> <repositories> <repository> <id>eap</id> <url>http://maven.repository.redhat.com/techpreview/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>eap</id> <url>http://maven.repository.redhat.com/techpreview/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>3.0.2.Final-redhat-4</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.9.1</version> </dependency> </dependencies> </project> 酷,相当的详细,但是我希望你们能够理解里面的代码,在这篇博文中我假设读者都已经了解Java,因此我不准备解释里面的细节了。 第二步:创建beans.xml文件并且设置我们的servlet映射 作为范例的一部分,我们将会对我们的数据库访问类使用CDI(上下文依赖注入)。根据官方的CDI配置说明,一个应用要使用CDI的话就要在该应用的 WEB-INF 目录里面包含一个beans.xml文件。因此我们就来创建这个文件并且按照我们所需的信息来配置它。进入到你的 /src/main/webapp/WEB-INF 目录然后创建一个 beans.xml文件,加入下面的代码:
我们也需要在 web.xml 文件里面为我们的RESI API设置servlet映射。在 /src/main/webapp/WEB-INF 目录的文件里面加入下面的servlet映射元素:
|