• node通过node-java库调用java


        node有一个库,node-java,可以通过js的方式调用java语言,听起来好像很好玩,但是这个玩意要求很复杂。

        1、本机安装msbuild环境。这个东西简单的安装方式就是npm install -g windows-build-tools,但是经常失败。还有一种方式就是在本机直接安装一个visual studio 2017。本人通过尝试,发现通过visual studio installer可以安装组件的方式安装这个环境。需要选中如下组件:

        msbuild
        core c++ features
        c++ toolset
        windows 10 sdk

        2、本机有jdk,并设置了相关环境变量JAVA_HOME,PATH。

        =======================================

        有了上面的环境准备,接着就可以安装node-java依赖了。

    npm install java --save

        这一步会进行源码编译,所以会自动运行node-gyp,接着利用系统中的msbuild进行源码编译。没有报错就安装成功了。如果编译安装java依赖失败,回头检查msbuild,jdk安装情况。

         js调用java简单示例:

    1. const java = require("java")
    2. var javaLangSystem = java.import("java.lang.System")
    3. javaLangSystem.out.printlnSync("hello") //hello
    4. var list1 = java.newInstanceSync("java.util.ArrayList")
    5. list1.addSync("a")
    6. list1.addSync("b")
    7. console.log(list1.toStringSync()) //[a,b]
    8. console.log(list1.sizeSync())//2
    9. console.log(list1.getSync(1))//b
    10. var ArrayList = java.import("java.util.ArrayList")
    11. var list2 = new ArrayList()
    12. list2.addSync("a")
    13. list2.addSync("b")
    14. console.log(list2.toStringSync()) //[a,b]
    15. console.log(list2.sizeSync())//2
    16. console.log(list2.getSync(1))//b

        运行程序,打印信息如下: 

        以上示例演示了js调用java原生的方法,很多方法在调用的时候,与java有一些区别,方法后面都带着Sync后缀,表示同步方法,也好理解,node很多操作都是异步的,要想直接得到结果,就需要调用同步方法,就好比在进行文件操作那样:fs.readSync(),fs.mkdirSync() 。

        也可以自定义一个java类,然后编译打包,最后给js调用。

        准备一个Test.java

    1. package com.xxx;
    2. public class Test{
    3. public static String hello(String name){
    4. return "hi,"+name;
    5. }
    6. }

        编译,打jar包。

        准备js调用java代码test.js:

    1. const java = require("java")
    2. java.classpath.push(".")
    3. var Test = java.import("com.xxx.Test")
    4. var res = Test.helloSync("buejee")
    5. console.log(res)

        运行,打印如下:

        至此,js调用java示例介绍完了,其实没尝试的时候,觉着可能有一些神秘,但是当我们了解了之后,发现,就是一个混合调用的过程,需要我们熟悉java语言,也要熟悉javascript,这种调用没有太大的意义,因为很多事情java可以做,node同样可以做,而且这种调用环境非常复杂,不仅需要jdk,还需要msbuild,就是c源码编译,对机器环境要求较高。 

  • 相关阅读:
    ASP.NET Core 6框架揭秘实例演示[38]:两种不同的限流策略
    Java 基础复习 Day 21
    Golang 编写测试用例(单元测试、压力测试等)最新教程,细到极致
    【Java从入门到精通 03】:Java运算符及进制转换
    雨云OSS服务介绍和使用教程,以及Chevereto图床使用雨云OSS的教程
    ECO模式真的是省油模式吗?为什么很多司机都不开?
    机器学习之朴素贝叶斯
    【datawhale202206】pyTorch推荐系统:召回模型 DSSM&YoutubeDNN
    pyinstaller最简单教程
    分支和远程仓库
  • 原文地址:https://blog.csdn.net/feinifi/article/details/127740004