导航:首页 > 源码编译 > 用java实现编译翻译

用java实现编译翻译

发布时间:2022-02-08 21:09:16

A. 我想用java写一个翻译软件

真要做的话可以保存成json文件,然后解析Java解析json有很多框架网络一下有很多的。也可以存在数据库里,本地可以使用sqlite。

B. 用JAVA设计与实现中英文翻译系统

用java swing开发一个前台,在调用别人的webservice,有这类翻译的接口吧,最终实现,应该简单些吧1!

C. Java程序的翻译方式是“编译”还是“解释”

java结合了编译和解释过程。Java源程序首先被编译成class文件,命令javac,这一点大家都毫无疑问。然后,由虚拟机(jvm)对class文件加以解释执行。
个人觉得,解释器不对源程序做任何改变,这也是证明java不是解释语言的证据,因为有class文件

D. 如何编写简单的java编译器(用java语言),比如说能翻译诸如"public static void main" 的就行。

看看《编译原理》或许对你有帮助。
要编译一门语言,你要知道它的语法 syntax 和语义 semantics,语法是用来检查所谓的“语法错误”,语义是让语句变得有意义,对计算机程序语言来说,就是把它翻译成计算机能执行的指令。
你需要了解最基本的一些概念诸如正则表达式,上下文无关语言,上下文相关语言,等等。

《编译原理》是很通用的基础书籍,里面我记得有介绍了 yacc 的用法,这是 GNU 里的一款编译器的编译器,对应有一个 Java 的 Project 叫 yacc for Java,你可以去 google 找一下。

如果你能写出一个检查语法错误的程序就已经很不错了,你可以考虑改做一个编辑器之类的软件(只需要找错,不需要编译)。如果你真要做编译器,工程量巨大不说,你首先需要对至少两种语言都熟悉,你需要对计算机的指令和它的执行方式有深刻理解,尤其是 Java 这种动态的高级语言,有类啊对象啊什么的,要把它翻译成机器指令实属不易,至今除了 Sun 的 javac 都没有很成功的编译器,那个 GCJ(把 Java 编译成本地代码)的尝试也只成功了一半,以前还被 MingW 包含在工具箱里(和 GCC 什么的一起),但是有很多特性不支持,而且已经很久不更新了,新版本的 MingW 里都没有了。想一个人从零开始设计一款 Java 的编译器,即使是专家都做不到啊。

E. 如何用java调用c语言编译器实现在线编译c语

要在java中调用c语言的库,需要使用Java提供了JNI。
举例说明
在c语言中定义一个 void sayHello()函数(打印Hello World);然后在Java中调用这个函数显示Hello Word.
现在分别从Java和C语言两部分说明:
1. Java 部分
首先定义一个HelloNative,在其中申明sayHello函数,函数要申明为Native 类型的.如下:
public class HelloNative {
public native void sayHello();
}

编译这个类,生成class文件:
javac HelloWorld.java

利用javah生成需要的h文件
javah HelloNative

生成的 h文件大概如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */

#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

可以看一下上面自动生成的程序,程序include了jni.h,这个头文件在 $JAVA_HOME下的include文件夹下. 还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。
2. C语言部分
根据上面生成的h文件编写相应的代码实现,建立一个 HelloNative.cpp用来实现显示Hello World的函数.如下:

#include <stdio.h>
#include "HelloNative.h"

JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}

代码编写完成之后,我们再用gcc编译成库文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp

这样就会在当前目录下生成一个libHelloNative.so的库文件.这时需要的库已经生成,在C语言下的工作已经完成了.
接下来需要在Java中编写一个程序测试一下.在程序前,需要将我们的库载入进去.载入的方法是调用Java的 System.loadLibrary("HelloNative");

public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}

但是再编译后,运行的时候,问题又出现了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)

载入库失败,但是库明明就是放在当前文件夹下的,怎么会载入失败呢?
用System.getProperty("java.library.path")查看,发现java.library.path中并不u存在当前的目录.主要有以下的几个解决办法:
1) 将生成的库复制到java.library.path有的路径中去,当然这样不是很好
2) 设置环境变量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,将当前的目录加入到LD_LIBRARY_PATH中
3) 设置java 的选项,将当前的目录加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
这样之后程序就能够成功的运行了.可以看见显示的"Hello World!"了

F. Java的编译程序先将Java源程序翻译成与机器无关的__________。12.表达式¨23 & 18’’的值是__________。

字节码

18

G. Java编译器如何实现把原始的代码翻译成目标机的机器语言

你编写的.java 经过 javac.exe 编译后变成了字解码文件 .class ;.class 是java 用来实现跨平台的一门技术,C# 也是照着它学做出来的,.class 经过 本地 jvm.dll 装在jre 中,解释执行。就变成了机器语言。不同的jvm 编写不同。linux mac windows 等。具体的你可以去看 java 编程思想。不过这个对你以后工作没有什么帮助,也不会有人问,理解一下即可。

H. JAVA如何实现条件编译

条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译。代码如下:
#IFDEF DEBUG
#UNDEF DEBUG
#ENDIF
#define DEBUG
#IFDEF DEBUUG
/*
code block 1
*/
#ELSE
/*
code block 2
*/
#ENDIF
但是在JAVA中却没有预处理,宏定义这些东西,而有时在一些项目中,我们又需要条件编译。那么,在JAVA中,该如何实现条件编译呢?
我们来看一个例子。
编写一个helloworld程序。代码如下:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
保存为Hello.java并编译,得到一个class文件,并且观察到文件大小是417字节。然后我们对这个文件进行反编译,用jd-gui。得到代码如下:
import java.io.PrintStream;
public class Hello

I. 用Java可以写C语言编译器吗

用java是可以写语言编译器的,用任何语言工具写都可以。 各语言开发工具间只有开发效率的差异,没有可行不可行的区别。

编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指令就是CPU的指令集,当然可以直接操作内存),当然,这个二进制文件需要符合操作系统的可执行文件的格式(PE格式或ELF格式)才能执行。

换个角度理解:
linux gcc实际上就是一个工具集合,包含编译器,汇编器,连接器等
编译器就是把c语言程序翻译为一种叫做目标文件的中间表示形式,然后交给汇编器,翻译为汇编程序,而汇编执行直接对应二进制机器码,链接之后就可以变成可执行文件了。

而用java实现的编译器完全可以代替gcc工具集合中的编译器,生成相同的目标文件的中间表示形式,在交给gcc汇编器,连接器等处理。

J. 用java做一个java的编译器

Javac编译器读取Java源代码,并将其编译成字节代码,说的直白一点就是把java语言翻译成计算机可以识别的二进制代码。
java的编译器有很多种,有sun公司的jdk,有oracle的jdk,还有其他一些公司的,多采用sun公司的jdk。
java同时需要集成开发环境,它集成了java的编译器,让我们不必通过命令行来编译java类文件,通过它我们可以快速的开发我们需要的程序。目前用的比较多的集成开发环境有eclipse和myeclipse,eclipse有很多具有针对性的版本来应对不同的开发,而myeclipse则是相对来说功能比较全面,当然也需要购买,个人建议myeclipse。

阅读全文

与用java实现编译翻译相关的资料

热点内容
travelboast安卓怎么设置路线 浏览:51
播放解压的图 浏览:228
新建一个名为hux的文件夹 浏览:532
桥水基金加密货币 浏览:196
还有什么好app 浏览:152
微软最惨的源码 浏览:40
上海灵意压缩机 浏览:415
泰拉瑞亚2020最新服务器ip地址 浏览:563
安卓机玩吃鸡什么画质 浏览:873
徒步缓解压力的视频 浏览:238
图像算法口诀 浏览:860
人踩什么解压 浏览:921
php语法检查命令 浏览:330
如何重设服务器网关 浏览:865
世界经济pdf 浏览:110
异或算法找缺失的数 浏览:326
单片机flagt1 浏览:486
单片机清理 浏览:660
东风景逸空调压缩机 浏览:158
天津程序员炒股 浏览:230