余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

JavaScript企业容器:从Java到Node.js

xiyangw 2022-11-26 15:45 153 浏览 0 评论

我们来看看一个开源项目,并讨论为什么它是使用Node.js的企业应用程序和微服务的灵活开发环境。

本文为Java和JavaScript开发人员介绍了“ JavaScript Enterprise Container ”(JEC)项目。它将展示一个灵活的开发环境,用于构建Node.js上的企业应用程序和微服务。

关于JEC

JEC是一个易于使用的开源项目,它执行JavaScript代码服务器端部署Web应用程序,例如微服务,RESTful API,CDN平台等。

JEC与标准MEAN堆栈相比具有以下优点:

  • 一个标准化的便携式开发环境。
  • Spring Boot和Java EE的高效替代方案。
  • JavaScript应用程序可扩展性的有效解决方案。
  • 一种用于构建和服务微服务和Angular应用程序的同构方法。

JEC的JavaScript开发人员

JEC完全是用TypeScript编写的,这是解决复杂的JavaScript OOP体系结构问题的最佳解决方案。TypeScript易于学习,并为创建企业应用程序提供了必要的严格性。此外,TypeScript编译器允许使用基于声明性元数据流程的高级技术,如面向方面编程和依赖注入。

声明性元数据对于隐藏概念和框架的复杂性同时增加环境的功能很有用。例如,可以使用@WebJslet装饰器声明JEC URL映射,而不添加任何其他配置或JavaScript代码:

@WebJslet({

name: "HelloWorld",

urlPatterns: ["/say-hello"]

})

export class HelloWorldSvc extends HttpJslet {

public doGet(req: HttpRequest, res: HttpResponse, exit: Function): void {

exit(req, res.send("Hello World!"));

}

}

这是一个简单的示例,但想象一下如何使用另一个框架处理数百个不同的URL。与基于表达式的应用程序相反,使用模块化方法构建Web服务变得非常简单。JEC本身就构建了灵活,可扩展且可完全测试的应用程序。

但是,Angular开发人员真正感兴趣的是可以使用相同的语言和相同的SOA设计来开发表示层的两个部分。这就是我们所说的“ 同构方法”。

面向Java开发人员的JEC

JEC为希望利用Node.js平台的一些优势的Java开发人员提供了两个主要优势:

它的开发遵循JEE和Spring Boot的概念。它旨在消除传统的基于容器的企业应用程序的复杂性。由于TypeScript与Java非常接近,并且JEC架构直接从JEE和Spring继承,所以Java开发人员在处理JEC生态系统时完全没有困难。

以下资源示例显示了JAX-RS与REST式服务(JARS)的JavaScript API 之间的相似之处:

@ResourcePath("/search")

export class Search {

@GET({

route: "/users"

})

public getUsers(@Exit exit: Function, @QueryParam name: any, @QueryParam age: any): void {

let response: string = "searching for users with ";

if(name) response += "name='" + name + "'" + (age ? " and " : "");

if(age) response += "age='" + age + "'" ;

exit(response);

}

}

我们还决定实施类似于CDI的解决方案来实施依赖注入。原因在于CDI比我们的新Spring概念更适合学习和使用。

请记住,JavaScript不提供创建上下文的内置过程。因此,JavaScript依赖注入(JDI)规范比原始CDI规范更简单。但是,JDI比其他JavaScipt / TypeScript DI框架更强大。

此外,JEC附带了许多Java开发人员熟悉的开发工具,例如:

  • GlassCat服务器:JEC参考实现。
  • Wildcat:完全可定制的原型管理器,类似于Maven原型。
  • JUTA:基于JUnit 4+的单元测试框架。
  • 许多不同的模拟框架用于测试基于JEC注释的应用程序。
  • 提供基于JEE安全层开启会话和安全功能的能力。
  • 使用类似JSTL的模板框架来创建网页。

有关JUTA的更多信息,请阅读以下关于DZone: JUTA:JavaScript单元测试API的文章

使用方便

JEC最重要的部分之一就是设计简单。已知JEE使用和部署非常复杂。所以,我们花费了大量精力来消除复杂性,特别是在安装和配置方面。

文档部分的视频显示了GlassCat服务器的安装和使用方法。

当然,这不是魔术!您需要了解一些关于配置文件和JEC结构和规格的基础知识。但是,GlassCat非常简单,实际上它是面向所有开发人员的面向DevOps的!

JEC和微服务

在谈到容器编排,API网关和微服务时,部署速度真的很重要!JEC通过结合Node.js运行时功能和其特定体系结构,专注于服务器的启动速度。

在生产模式下,嵌入了RESTful微服务的GlassCat服务器实例,我们可以在不到70毫秒的时间内启动(取决于您的主机配置)

同时,由于其非阻塞和异步架构,JEC是真正的JAVA替代品,可降低基础架构成本。

此外,GlassCat专门运行它自己的封装的Node.js进程。这意味着您可以通过使用PM2等工具来模拟复杂的负载均衡体系结构,从而为管理应用程序提供了稳定性和灵活性。

开放技术

使用传统的JavaScript / TypeScript框架时遇到的一个难题是您经常依赖您在项目生命周期中选择的技术。

但是,JEC是一套标准规范,允许您根据自己的考虑选择自己的首选实施方案,例如业务支持,表演,社区参与等。

例如,下面的代码显示了如何声明JARS参考实现来管理以前的Search资源类:

import { BootstrapScript, Bootstrap, JecContainer } from "jec-commons";

import { SandcatBuilder } from "jec-sandcat";

@Bootstrap()

export class InitApp extends BootstrapScript {

public run(container:JecContainer):void {

// Sandcat is the JARS reference implementation:

new SandcatBuilder().build(container)

.process((err:any)=>{});

}

}

要使用其他JARS实现,您只需声明您的首选框架而不是默认的框架(Sandcat)。JEC入门以JEC开始的最佳方式是在GlassCat服务器实例中创建和部署自己的应用程序。因此,我们制作了一些视频,向您展示如何详细安装它以及如何使用GlassCat项目模型(GPM)创建新项目。

所有视频均可从JEC视频频道获得。

要开始使用GlassCat服务器,您必须安装JEC命令行界面(JEC CLI):

[sudo] npm install jec-cli -g

然后,您将创建一个新的GlassCat服务器实例,如下所示:

cd <path/to/your/server>

jec glasscat-install

最后,使用以下start 命令启动这个新的服务器实例 :

<path/to/your/server> glasscat start

只要使用 ctrl+C ,如果你想杀死所有进程,并停止服务器。

致JEC基金会和超越!

长期维持JEC项目的最佳方式是建立一个基础或融入现有的基础。

第一步是向一个庞大而活跃的用户和开发者社区开放项目,其目标如下:

  • 高度提高项目质量。
  • 更快地开发缺失的功能。
  • 修复所有问题并改进TDD流程。
  • 为云计算业务解决方案提供高效的开源替代方案。
  • 更接近开发人员和公司的需求。

整个JEC生态系统,包括GlassCat和其他框架,都是在去年开发的。试想一下我们可以一起做什么!

相关推荐

Mac软件删除方法,这样删除不会有残留
Mac软件删除方法,这样删除不会有残留

Mac电脑如果有太多无用的应用程序,很有可能会拖垮Mac系统的运行速度。因此,卸载电脑中无用的软件是优化Mac系统运行速度的最佳方式之一。Mac卸载应用程序的方...

2023-09-23 17:34 xiyangw

安利一款 Mac 的清理工具 Cleaner One
安利一款 Mac 的清理工具 Cleaner One

自从入手mac以后,一直在找款mac的清理工具之前也尝试过CleanMyMac和柠檬清理柠檬清理是腾讯旗下的,虽然免费,但更新不频繁,最近一次更新还...

2023-09-23 17:33 xiyangw

苹果电脑需要安装杀毒软件吗?一文告诉你
苹果电脑需要安装杀毒软件吗?一文告诉你

随着数字时代的发展,计算机安全问题变得越来越重要。而在计算机安全领域中,杀毒软件是一个被广泛讨论的话题。苹果电脑需要安装杀毒软件吗?对于苹果电脑用户来说,他们常...

2023-09-23 17:30 xiyangw

mac上实用的工具

mac系统上有很多好用的工作,本期给大家带来一些本人长期使用的软件,特别是刚从windows系统的pc转移到macbook上的小伙伴,可能有一定的帮助。1.Alfred可以完全取代苹果自带Spotl...

Mac专用免费清理软件CleanMyMac
Mac专用免费清理软件CleanMyMac

在Mac中,越来越多的垃圾占用了磁盘空间怎么办?直接拖拽到废纸篓很多软件不能完全卸载干净怎么办……伴随着这些问题,如果有一款多功能的软件能够解决以上的全部难题就...

2023-09-23 17:29 xiyangw

MAC软件分享CleanMyMac中文版 支持最新版系统
MAC软件分享CleanMyMac中文版 支持最新版系统

CleanMyMac的强大不需要过多的去介绍,软件支持最新版Macos10.15.6系统。CleanMyMac具有非常强大的功能,可让您安全,智能地扫描和清理...

2023-09-23 17:28 xiyangw

安装CleanMyMac 3提示软件已损坏
安装CleanMyMac 3提示软件已损坏

安装CleanMyMac3提示软件已损坏,出现这样的原因是往往是使用了CleanMyMac3破解版,主要是因为CleanMyMac3的来源问题,我们的正版软件(...

2023-09-23 17:27 xiyangw

苹果Mac中使用 CleanMyMac X 清理垃圾时频繁要求输入密码如何解决?
苹果Mac中使用 CleanMyMac X 清理垃圾时频繁要求输入密码如何解决?

有不少用户反映在使用CleanMyMac清理系统垃圾文件的时候会频繁要求输入开机密码,如何解决这个问题?来看看吧!解决方法:1.打开「终端」,并输入以下命令...

2023-09-23 17:27 xiyangw

MacBook清理垃圾软件哪个好
MacBook清理垃圾软件哪个好

很多时候手动清理mac效果并没有那么好,常常会有疏忽的地方,其实我们完全可以依赖一些mac清理垃圾软件。windows上我们会借助360安全卫士、腾讯安全管家等...

2023-09-23 17:26 xiyangw

全球真的只有13台DNS根域名服务器吗?
全球真的只有13台DNS根域名服务器吗?

DNS根域名服务器(DNSrootnameservers)是一组特殊的DNS服务器,它们存储有关Internet域名系统(DNS)中所有顶级域的信息。这些...

2023-09-23 17:25 xiyangw

网络管理员,网络工程师每日一练

在DNS服务器中的()资源记录定义了区域的邮件服务器及其优先级。A.SOAB.NSC.PTRD.MX试题答案:D...

Android性能优化之网络优化DNS和HttpDNS知识详解
Android性能优化之网络优化DNS和HttpDNS知识详解

前言小计在App访问网络的时候,DNS解析是网络请求的第一步,默认我们使用运营商的LocalDNS服务。有数据统计,在这一块3G网络下,耗时在2...

2023-09-23 17:25 xiyangw

如何修改域名DNS服务器?修改DNS服务器常见问题汇总
如何修改域名DNS服务器?修改DNS服务器常见问题汇总

在域名管理过程中,我们为了获得更专业安全的域名解析服务,就需要修改DNS服务器,下面中科三方针对修改DNS服务器常见问题做下简单回答。1.修改DNS服务器和修改...

2023-09-23 17:24 xiyangw

netty系列之:在netty中使用 tls 协议请求 DNS 服务器

简介在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求消息。在请求的过程中并没有进行消息的加密,所以这种请求是不安全的。那么有同学会问了,就是请求解析一个...

「GCTT 出品」使用 Golang 构建 DNS 服务器
「GCTT 出品」使用 Golang 构建 DNS 服务器

需求:对DNS查询进行转发和缓存的本地DNS服务器。补充1:提供一个记录管理的接口(HTTPhandler)。补充2:提供一个名字(name)。D...

2023-09-23 17:23 xiyangw

取消回复欢迎 发表评论: