Ⅰ JDK 6 是什么
JDK(java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:
·javac – 编译器,将源程序转成字节码
·jar – 打包工具,将相关的类文件打包成一个文件
·javadoc – 文档生成器,从源码注释中提取文档
·jdb – debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
JDK中还包括各种例子程序,用以展示Java API中的各部分。
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显着特点是随着Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
JDK一般有三种版本:
SE(J2SE),standard edition,标准版,是我们通常用的一个版本
EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,
ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序
Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。
JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java
API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
作为JDK实用程序,工具库中有七种主要程序。
Javac:Java编译器,将Java源代码转换成字节码。
Java:Java解释器,直接从类文件执行Java应用程序字节代码。
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javadoc:根据Java源码及说明语句生成HTML文档。
Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Ⅱ 自己可以编译安卓源码吗
用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:
sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”
其中[email protected]为你自己的邮箱.
简要说明
android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.
源码下载
由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)
repo工具下载及安装
通过执行以下命令实现repo工具的下载和安装
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:
我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:
这里写图片描述
执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.
错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:
通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.
结束吧
到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.
Ⅲ 濡备綍缂栬疟Zookeeper婧愮爜
鍒╃敤Ant灏哯ookeeper婧愮爜缂栬疟鎴怑clipse宸ョ▼銆
镓揿紑cmd锛屽垏鎹㈠埌Zookeeper镄勮В铡嬬洰褰曚笅锛屽嵆build.xml镄勫綋鍓岖洰褰曚笅銆傜敤ant eclipse锻戒护杩涜岀紪璇戙
E:\zookeeper-trunk>E:\apache-ant-1.9.6\bin\ant.bat eclipse
娉锛欵:\zookeeper-trunk鏄痁ookeeper婧愮爜镄勮В铡嬬洰褰曪纴E:\apache-ant-1.9.6鏄疉nt閮借В铡嬬洰褰曘傚洜涓烘垜娌℃湁璁剧疆ANT_HOME鍙奝ath锛岃繖閲屽氨鐩存帴浣跨敤ant锻戒护镄勭粷瀵硅矾寰勚
濡备笅镓绀猴细鍑虹幇钬淏UILD SUCCESSFUL钬濓纴鍗充唬琛ㄧ紪璇戝畬鎴愩
4. 瀵煎叆缂栬疟钖庣殑Zookeeper宸ョ▼
Import->Existing Projects into Workspace
E:\zookeeper-trunk鍗砕ookeeper婧愮爜镄勮В铡嬬洰褰
镣瑰嚮Finish銆
瀵煎叆婧愮爜瀹屾瘯~
娉ㄦ剰锛
1. 娉ㄦ剰缂栬疟镞禞DK镄勭増链锛屾湁鍙鑳藉嚭鐜颁笉鍏煎圭殑𨱍呭喌銆傝繖镞跺彲阃氲繃濡备笅鏂瑰纺淇鏀癸细鍙抽敭镣瑰嚮Zookeeper宸ョ▼->Properties->Java Compiler
2. 瀵煎叆瀹屾瘯钖庯纴鍑虹幇浜嗏淭he import org.apache.commons.collections cannot be resolved钬濈殑阌栾锛岀粡鍒嗘瀽锛孍:\zookeeper-trunk\build\test\lib\commons-collections-2.0.jar娌℃湁瀵煎叆鍏朵腑銆
瑙e喅鏂规硶锛氩湪Eclipse閲岋纴镓惧埌璇ュ寘锛屽彸阌--->build-path-->Add to Build Path鍗冲彲
Ⅳ 如何在Windows上编译java程序
1、执行cmd命令javac后,显示如图所示编译成功,说明是java运行正常。
Ⅳ 如何用ubuntu 12.04 32bit 编译android 4.4.4
系统环境
系统:Ubuntu12.04 64位系统。
源码:Android4.4源码。
选择Ubuntu12.04,是因为在14.04上没能折腾成功,在上面兼容32位程序的配置有点烦。12.04必须要用64位的,编译Android4.4时需要64位环境,同时要兼容32位程序,折腾。
步骤
配置jdk6
Android官方给的步骤是用OpenJdk,实测是不行的。网上找到https://jdk6.java.net/download.html
这个网址有需要的jdk,下载自解压安装包。自解压后在当前目录下生成一个jdk的目录,打开/etc/environment,增加自己的jdk
bin目录到PATH里面。同时新增如下环境变量:
CLASSPATH=/path/to/your/local/jdk/dir/lib
JAVA_HOME=/path/to/your/local/jdk/dir
然后执行如下命令,设置系统的默认jdk:
$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/local/java/jdk1.6.0_38/bin/javaws 300
$ sudo update-alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.6.0_38/bin/jar 300
$ sudo update-alternatives --install /usr/bin/javap javap /usr/local/java/jdk1.6.0_38/bin/javap 300
$ sudo update-alternatives --config java
安装软件包
能装的都要装上,以免编译失败,又要回过头重装,如下:
$ sudo apt-get install build-essential make gcc g++ libc6-dev texinfo
libncurses-dev git-core gnupg flex bison zip curl ncurses-dev libsdl-dev
zlib1g-dev ia32-libs libxml2-utils lzma
编译源码
到源码目录下,如下:
$ source build/envsetup.sh
$ lunch
选择arm平台。
$ make -jn
n为CPU个数的两倍,主要是提高编译速度。
可能的错误
编译过程碰到如下错误:
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
一般情况是因为前面的javap没有配置所致。如果必须的软件包没有安装,也会有类似的提示,仔细向上翻看错误提示,找到真正的错误地方,安装对应的软件包即可。
Ⅵ 如何用maven将java8写的代码编译为java6平台的
在一般的Java应用开发过程中,开发人员使用Java的方式比较简单。打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了。这种开发模式背后的过程是:开发人员编写的是Java源代码文件(.java),IDE会负责调用Java的编译器把Java源代码编译成平台无关的字节代码(byte code),以类文件的形式保存在磁盘上(.class)。Java虚拟机(JVM)会负责把Java字节代码加载并执行。Java通过这种方式来实现其“编写一次,到处运行(Write once, run anywhere)” 的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。
动态编译Java源文件
在一般情况下,开发人员都是在程序运行之前就编写完成了全部的Java源代码并且成功编译。对有些应用来说,Java源代码的内容在运行时刻才能确定。这个时候就需要动态编译源代码来生成Java字节代码,再由JVM来加载执行。典型的场景是很多算法竞赛的在线评测系统(如PKU JudgeOnline),允许用户上传Java代码,由系统在后台编译、运行并进行判定。在动态编译Java源文件时,使用的做法是直接在程序中调用Java编译器。
JSR 199引入了Java编译器API。如果使用JDK 6的话,可以通过此API来动态编译Java代码。比如下面的代码用来动态编译最简单的Hello World类。该Java类的代码是保存在一个字符串中的。
01 public class CompilerTest {
02 public static void main(String[] args) throws Exception {
03 String source = "public class Main { public static void main(String[] args) {System.out.println(\"Hello World!\");} }";
04 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
05 StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
06 StringSourceJavaObject sourceObject = newCompilerTest.StringSourceJavaObject("Main", source);
07 Iterable< extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
08 CompilationTask task = compiler.getTask(null, fileManager, null,null, null, fileObjects);
09 boolean result = task.call();
10 if (result) {
11 System.out.println("编译成功。");
12 }
13 }
14
15 static class StringSourceJavaObject extends SimpleJavaFileObject {
16
17 private String content = null;
18 public StringSourceJavaObject(String name, String content) ??throwsURISyntaxException {
19 super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE);
20 this.content = content;
21 }
22
23 public CharSequence getCharContent(boolean ignoreEncodingErrors) ??throws IOException {
24 return content;
25 }
26 }
27 }
如果不能使用JDK 6提供的Java编译器API的话,可以使用JDK中的工具类com.sun.tools.javac.Main,不过该工具类只能编译存放在磁盘上的文件,类似于直接使用javac命令。
另外一个可用的工具是Eclipse JDT Core提供的编译器。这是Eclipse Java开发环境使用的增量式Java编译器,支持运行和调试有错误的代码。该编译器也可以单独使用。Play框架在内部使用了JDT的编译器来动态编译Java源代码。在开发模式下,Play框架会定期扫描项目中的Java源代码文件,一旦发现有修改,会自动编译 Java源代码。因此在修改代码之后,刷新页面就可以看到变化。使用这些动态编译的方式的时候,需要确保JDK中的tools.jar在应用的 CLASSPATH中。
下面介绍一个例子,是关于如何在Java里面做四则运算,比如求出来(3+4)*7-10的值。一般的做法是分析输入的运算表达式,自己来模拟计算过程。考虑到括号的存在和运算符的优先级等问题,这样的计算过程会比较复杂,而且容易出错。另外一种做法是可以用JSR 223引入的脚本语言支持,直接把输入的表达式当做JavaScript或是JavaFX脚本来执行,得到结果。下面的代码使用的做法是动态生成Java源代码并编译,接着加载Java类来执行并获取结果。这种做法完全使用Java来实现。
01 private static double calculate(String expr) throws CalculationException {
02 String className = "CalculatorMain";
03 String methodName = "calculate";
04 String source = "public class " + className
05 + " { public static double " + methodName + "() { return " + expr +"; } }";
06 //省略动态编译Java源代码的相关代码,参见上一节
07 boolean result = task.call();
08 if (result) {
09 ClassLoader loader = Calculator.class.getClassLoader();
10 try {
11 Class<?> clazz = loader.loadClass(className);
12 Method method = clazz.getMethod(methodName, new Class<?>[] {});
13 Object value = method.invoke(null, new Object[] {});
14 return (Double) value;
15 } catch (Exception e) {
16 throw new CalculationException("内部错误。");
17 }
18 } else {
19 throw new CalculationException("错误的表达式。");
20 }
21 }
上面的代码给出了使用动态生成的Java字节代码的基本模式,即通过类加载器来加载字节代码,创建Java类的对象的实例,再通过Java反射API来调用对象中的方法。
Java字节代码增强
Java 字节代码增强指的是在Java字节代码生成之后,对其进行修改,增强其功能。这种做法相当于对应用程序的二进制文件进行修改。在很多Java框架中都可以见到这种实现方式。Java字节代码增强通常与Java源文件中的注解(annotation)一块使用。注解在Java源代码中声明了需要增强的行为及相关的元数据,由框架在运行时刻完成对字节代码的增强。Java字节代码增强应用的场景比较多,一般都集中在减少冗余代码和对开发人员屏蔽底层的实现细节上。用过JavaBeans的人可能对其中那些必须添加的getter/setter方法感到很繁琐,并且难以维护。而通过字节代码增强,开发人员只需要声明Bean中的属性即可,getter/setter方法可以通过修改字节代码来自动添加。用过JPA的人,在调试程序的时候,会发现实体类中被添加了一些额外的 域和方法。这些域和方法是在运行时刻由JPA的实现动态添加的。字节代码增强在面向方面编程(AOP)的一些实现中也有使用。
Ⅶ java缂栬疟鍣ㄦ槸浠涔
Java缂栬疟鍣ㄦ槸涓绉嶅皢Java婧愪唬镰佺紪璇戜负Java瀛楄妭镰佺殑绋嫔簭銆侸ava婧愪唬镰佹槸浠.java鏂囦欢镄勫舰寮忓瓨鍌ㄧ殑锛岃孞ava瀛楄妭镰佹槸涓绉岖敱Java铏氭嫙链猴纸JVM锛夊彲璇嗗埆镄勪簩杩涘埗镙煎纺銆傜紪璇戝櫒灏嗘簮浠g爜鏂囦欢杞鎹涓哄瓧鑺傜爜鏂囦欢锛岀劧钖庡彲浠ュ湪Java铏氭嫙链轰笂杩愯岃繖浜涘瓧鑺傜爜鏂囦欢銆
Java缂栬疟鍣ㄩ氩父鏄疛ava寮鍙戝伐鍏峰寘锛圝DK锛夌殑涓閮ㄥ垎锛屾偍鍙浠ラ氲繃瀹夎匤DK𨱒ヨ幏寰桱ava缂栬疟鍣ㄣ侸DK杩桦寘𨰾琂ava铏氭嫙链猴纸JVM锛夊拰鍏朵粬Java寮鍙戝伐鍏凤纴渚嫔傝皟璇曞櫒銆佹枃妗g敓鎴愬櫒绛夌瓑銆傚湪锻戒护琛屼笅锛屾偍鍙浠ヤ娇鐢╦avac锻戒护𨱒ヨ皟鐢↗ava缂栬疟鍣锛屽皢婧愪唬镰佹枃浠剁紪璇戜负瀛楄妭镰佹枃浠躲备互涓嬫槸涓浜涘父鐢ㄧ殑Java缂栬疟鍣ㄨ蒋浠躲
1銆丱racle JDK锛歄racle Java Development Kit鏄涓娆剧敱Oracle鎻愪緵镄凧ava寮鍙戝伐鍏峰寘锛屽寘𨰾琂ava缂栬疟鍣锛坖avac锛夊拰鍏朵粬寮鍙戝伐鍏枫
2銆丱penJDK锛歄penJDK鏄涓涓鍏嶈垂镄凧ava寮鍙戝伐鍏峰寘锛屾槸Oracle JDK镄勫紑婧愭浛浠e搧銆傚畠鍖呭惈Java缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫
3銆丒clipse锛欵clipse鏄涓涓娴佽岀殑Java闆嗘垚寮鍙戠幆澧冿纸IDE锛夛纴鍖呮嫭Java缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫傚畠杩樻敮鎸佸叾浠栫紪绋嬭瑷镄勫紑鍙戙
4銆丯etBeans锛歂etBeans鏄鍙︿竴涓娴佽岀殑Java IDE锛屽寘𨰾琂ava缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫傚畠涔熸敮鎸佸叾浠栫紪绋嬭瑷镄勫紑鍙戙
5銆両ntelliJ IDEA锛欼ntelliJ IDEA鏄涓娆炬祦琛岀殑Java IDE锛屽寘𨰾琂ava缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫傚畠杩樻敮鎸佸叾浠栫紪绋嬭瑷镄勫紑鍙戙
6銆丣Creator锛钦Creator鏄涓娆绻ava IDE锛屽寘𨰾琂ava缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫傚畠涔熸湁涓涓鍏嶈垂鐗堟湰鍜屼竴涓浠樿垂鐗堟湰銆
7銆丅lueJ锛欱lueJ鏄涓娆句笓涓哄埯瀛﹁呰捐$殑Java IDE锛屽寘𨰾琂ava缂栬疟鍣ㄥ拰鍏朵粬寮鍙戝伐鍏枫
闄や简杩欎簺锛岃缮链夎稿氩叾浠栫殑Java缂栬疟鍣ㄥ拰闆嗘垚寮鍙戠幆澧冨彲渚涢夋嫨锛屼綘鍙浠ユ牴鎹镊宸辩殑闇姹傚拰锽滃ソ阃夋嫨阃傚悎镊宸辩殑宸ュ叿銆
Ⅷ 怎么编译并调试 openjdk 源代码
环境构建需要的工具
1.cygwin 工具。这个工具的主要用处是为了在window平台上模拟出一个unix虚拟环境。
为了能够在window下编译openJDK,我们需要手动安装的工具如下:
Devel:binutils,make.
Interpreters:m4
Utils:cpio,awk,file(我在安装的过程中,没找到awk包和file包,可能是版本的问题。)
Archive:zip,unzip
System:procps
以上提供的键值对说明:(前面是文件名:包名)
2.安装编译器,我选用的编译器是VS2010,因为这个编译器中包好了windows SDK v7.0a,否则还要自己去下载这个SDK
(cygwin和vs2010安装后都会在操作系统的path环境变量中加入自己的bin目录路径,必须保证VS2010的bin目录在 cygwin的bin目录之前,因为这两个软件的bin目录中各自都有一个连接器“link.exe”,但是只有VS2010中的连接器可以完成 openJDK的编译)
3.下载一个已经编译好的JDK。
4.最后一步就是下载一个Apache ANT,JDK中的java代码部分都是使用ANT脚本进行编译的,ANT版本要求在1.6.5以上。
5.准备依赖项。
由于OpenJDK中的源码没有100%开源,但是在编译JDK的时候,我们又需要这部分闭源包,官方称为“JDK plug”。这部分闭源包可以从Source Releases页面下载。在windows平台下,其是以jar包的形式存在的。通过下面的命令就可以安装
java -jar jdk-7-ea-plug-b121-windows-i586-09_dec_1010.jar
运行后就会出现提示框,点击accept接受协议,然后安装到指定目录即可。
安装完成后建立一个环境变量“ALT_BINARY_PLUGS-PATH”,变量值为安装的JDK plug的安装路径,后面编译的时候需要它
6.安装一个大于2.3版本的FreeType,这是一个免费的字体渲染库。JDK的Swing部分和JConsole这类工具要使用到它。安装好后建立两个环境变量“ALT_FREETYPE_LIB_PATH”和“ALT_FREETYPE_HEADERS_PATH”,分别指向FreeType安装目录下的bin目录和include目录。另外还有一点官方文档没有提到但必须要做的事情是把FreeType的bin目录加入到PATH环境变量中。
7.下载Microsoft DirectX 9.0 SDK(Summer 2004),安装后大约有298MB,在微软官方网站上搜索一下就可以找到下载地址,它是免费的。安装后建立环境变量“ALT_DXSDK_PATH”指向DirectX 9.0 SDK的安装目录
8.去寻找一个名为“MSVCR100.DLL”的动态链接库,如果读者在前面安装了全套的Visual Studio 2010,那这个文件在本机就能找到,否则上网搜索一下也能找到单独的下载地址,大概有744KB。建立环境变量“ALT_MSVCRNN_DLL_PATH”指向这个文件所在的目录。如果读者选择的是VS2003,这个文件名应当为“MSVCR73.DLL”,应该在很多软件中都包含有这个文件,如果找不到的话,前面下载的“Bootstrap JDK”的bin目录中应该也有一个,直接拿来用吧。