Ⅰ 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目錄中應該也有一個,直接拿來用吧。