
正文
go运行java代码 go 运行js
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
golang调用java
golang调用java是什么,让我们一起了解一下?
golang是一种静态强类型、编译型语言。功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算,golang调用java就是接收一个参数,然后输出一行结果。
由于Java世界里有非常丰富的开源应用模型和轮子,而这些正是Go世界里面最缺乏的东西,所以我首先考虑的就是如何在Go里面调用现有的Java代码。
我们用一个简单的Go调用Java的例子,来进行测试。(在winxp环境下能够正常运行)这段代码比较简单,就是在Go代码里面去call一个叫Hello的java对象。而这个Hello .java功能也非常简单,就是接收一个参数,然后输出一行结果。
// run_java package main import ( "fmt" "os/exec" ) /** * 调用一个Hello.class,并接收一个参数 */ func callJava(){ cmd := exec.Command("java","Hello","tom") out,err := cmd.Output() if err != nil { println("error:",err.Error()) } fmt.Printf("call java class Hello: %q\n", string(out)) } func main() { fmt.Println("Test Call Java function!") callJava() } /* Hello.java public class Hello{ public static void main(String[] args){ if(args.length==0) System.out.println("hello my world!"); else System.out.println("hello my world! "+args[0]); } }*/
注意:
为了能够运行我的例子,需要把Hello.class放在和 run_java的可执行文件同样的目录下。例如, run_java.exe在d:\goproject下,那么Hello.class也要在d:\goproject下。
相关问答
Q1: 为什么许多原本的 Java 项目都试图用 go 进行重写开源?
项目推倒重构是项目开发大忌,一方面我们要尽量避免做项目推倒重构,尽量在前期就规划好,另一方面,我们又希望项目能常做小重构,这对项目可持续性开发是很有帮助的。而语言的重构,把Java项目用Go语言重写一遍,无疑是一次重大的推倒重来。
一、Go语言的优势在哪里
Go语言领先于Java的最大优势,就在于快。Go语言会被编译成机器代码,直接执行;Java语言则使用JVM运行其代码,这比Go语言要慢了很多。另外,Java语言的内存管理,相比于Go语言,也复杂得多,而内存管理,不管对于程序运行,还是对程序员的开发,都极为重要。最后,Go语言没有引用只有指针,这比Java语言处处引用,又领先了一个身位。
二、Go语言为什么更适合开源
开源,也就是开放源代码,最大的好处在于,可以利用全世界的程序员资源,来帮助你完善你的产品,开发新需求,或者修复产品BUG。这对产品的可持续发展,是非常有帮助的,很多企业纷纷将自己的产品开源,其实就是这个道理。而Go语言更易学,更易避错,更易阅读等特点,就决定了它更适合用来做开源项目。
三、Java语言的优势
Java语言是目前软件开发中使用率最广泛,也是最重要的程序之一,它的地位,绝对不是目前Go语言可以比拟的。Java在WEB应用的开发中,有着很重要的地位。但是,Java语言相对复杂的并发设计,相当庞大的项目体系,使其在开发、测试阶段都略为复杂,在某些方面已经逐步落后于其他语言。
Q2: GO语言中看到这样一串代码,换成java的话怎么写??
case QImage::Format_RGB32:
case QImage::Format_ARGB32:
case QImage::Format_ARGB32_Premultiplied:
for(int i = 0; i height; i ++)
{
const QRgb *pSrc = (QRgb *)image.constScanLine(i);
uchar *pDest = (uchar *)ret.scanLine(i);
for( int j = 0; j width; j ++)
{
pDest[j] = qGray(pSrc[j]);
}
}
break;
}
return ret;
}
Q3: java的多线程在golang中是如何体现的?
golang语言中实现Java的多线程主要是使用LockOSThread() 方法go运行java代码,代码如下go运行java代码:
package mainimport (
"log"
"runtime"
"time")func main() {
runtime.GOMAXPROCS(1)
for i := 0; i 10; i++ {
go func() {
//runtime.LockOSThread()
for {
log.Println("a")
time.Sleep(time.Second)
}
}()
}
time.Sleep(time.Hour)}
运行之后go运行java代码,就会产生10个进程,如下截图:
Q4: go语言有类似javaagent的工具吗
没有。
go语言开发工具有:Gogland、Eclipse、LiteIDE、KomodoIDE、Atom、Brackets、VisualStudioCode、Cloud9、CodeEnv、Wide等等。
golang语言并没有提供类似javaagent的机制允许我们在程序运行中修改代码逻辑。
go运行java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go 运行js、go运行java代码的信息别忘了在本站进行查找喔。





