當前位置:首頁 » 操作系統 » libgdx源碼

libgdx源碼

發布時間: 2022-05-02 02:02:19

❶ 請問有適合安卓游戲開發初學者用的游戲引擎嗎

Unity是比較容易上手,在國內比較熱門的游戲引擎之一,推薦Unity,使用javaScript 或 C#進行腳本編寫

❷ windowns怎麼命令行安裝svn

1.windows下的命令行svn客戶端
http://somebody-hjh.iteye.com/blog/1415992
我們知道,在linux下面的svn客戶端採用命令的方式管理與伺服器端svn交互。有些朋友想在windows下也具有相同的功能,而不是TortoiseSVN的GUI管理方式。這樣可以使用我們熟悉的svn命令。
在不用安裝TortoiseSVN客戶端的情況,大家可以再http://subversion.apache.org/packages.html#windows 找到windows下的svn客戶端工具。選擇Win32Svn 進行安裝。
安裝好後,bin目錄下就是相應程序了。通過添加環境變數的方式,把bin目錄添加到path。啟動cmd,敲入 svn help 以確認是否安裝成功。
好了,可以找到你的代碼,做checkout了。在commit代碼的過程中,經常會出現的一個問題是:svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found
這表示你的系統,沒有指定svn客戶端通過什麼樣的文本編輯器來寫提交的注釋。我們添加環境變數,SVN_EDITOR的值為notepad。再次svn ci 代碼。notepad彈出了,寫完注釋保存。代碼提交!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.使用SVN命令行工具,svn下載,windows命令行下svn
http://hi..com/cpuramdisk/item/6e8e0fc29f7dbe2f46d5c038
從http://subversion.tigris.org獲取subversion for windows的版本,安裝之後就有了svn.exe這個基於命令行的客戶端工具。當然伺服器端的程序也有了,這里就不關心如何配置SVN服務了。安裝程序把svn.exe的路徑加入了path環境變數,我們已經可以在命令行中直接輸入svn就可以使用了。

如果你不知道命令怎麼用svn命令,可通過如下方式查詢:
svn help
知道了子命令,但是不知道子命令的用法,還可以查詢:
svn help ci

開發人員常用命令

導入項目
svn import http://svn.chinasvn.com:82/pthread --message "Start project"

導出項目
svn checkout http://svn.chinasvn.com:82/pthread

採用 export 的方式來導出一份「干凈」的項目
svn export http://svn.chinasvn.com:82/pthread pthread

為失敗的事務清場
svn cleanup

在本地進行代碼修改,檢查修改狀態
svn status -v
svn diff

更新(update)伺服器數據到本地
svn update directory
svn update file

增加(add)本地數據到伺服器
svn add file.c
svn add dir

對文件進行改名和刪除
svn mv b.c bb.c
svn rm d.c

提交(commit)本地文檔到伺服器
svn commit
svn ci
svn ci -m "commit"

查看日誌
svn log directory
svn log file

相關的一些東西:
1、在本地文件中,每個目錄下都有一個.svn文件夾(屬性為隱藏),保存了相關的信息。
2、注冊環境變數SVN_EDITOR為"E:\Program Files\Vim\vim71\gvim.exe",結果在svn ci的時候,出現錯誤:

'E:\Program' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
svn: 提交失敗(細節如下):
svn: system('E:\Program Files\Vim\vim71\gvim.exe svn-commit.tmp') 返回 1

把SVN_EDITOR改為"gvim.exe",並且在path中添加路徑"E:\Program Files\Vim\vim71",這樣就可以在提交的時候用vim編寫注釋了。

附:
提供免費SVN服務的網站:
http://www.svnhost.cn/(推薦)
http://www.chinasvn.com
http://www.javaforge.com
http://unfuddle.com
http://svn.coollittlethings.com/index.php(針對開源免費,針對私人項目收費)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

3.http://space.itpub.net/14466241/viewspace-713138
Windows下SVN命令行工具使用詳解(附加TortoiseSVN)
上一篇 / 下一篇 2011-12-12 09:32:22 / 置頂(3) / 個人分類:網路文摘
查看( 4610 ) / 評論( 1 ) / 評分( 5 / 0 )

根據我的記憶,似乎Windows 7下自自帶一個svn命令行工具。如果你的機器沒有,不必擔心。你可以從http://subversion.tigris.org獲 取subversion for windows的版本,安裝之後就有了svn.exe這個基於命令行的客戶端工具。安裝程序把svn.exe的路徑加入了path環境變數,我們已經可以在命令行中直接輸入svn就可以使用了。

如今,好用的開源工程遍布世界各地。許多這樣的工具都提供了相應的工程源碼的SNV下載地址,所以,這個工具你幾乎是非了解不可的。以下列出svn使用使用的典型舉例。

一、關於命令行工具SVN

如果你不知道命令怎麼用svn命令,可通過如下方式查詢:
svn help
知道了子命令,但是不知道子命令的用法,還可以查詢:
svn help ci

常用命令格式與舉例
導入項目
svn import http://svn.chinasvn.com:82/pthread --message "Start project"

導出項目
svn checkout http://svn.chinasvn.com:82/pthread

採用 export 的方式來導出一份「干凈」的項目
svn export http://svn.chinasvn.com:82/pthread pthread

為失敗的事務清場
svn cleanup

在本地進行代碼修改,檢查修改狀態
svn status -v
svn diff

更新(update)伺服器數據到本地
svn update directory
svn update file

增加(add)本地數據到伺服器
svn add file.c
svn add dir

對文件進行改名和刪除
svn mv b.c bb.c
svn rm d.c

提交(commit)本地文檔到伺服器
svn commit
svn ci
svn ci -m "commit"

查看日誌
svn log directory
svn log file

二、關於可視化SVN工具TortoiseSVN

到http://tortoisesvn.net/downloads.html處下載可視化SVN工具TortoiseSVN。這個工具非常好用,是一個WINDOWS下可視化工具,特別是支持斷點續傳。

因此,如果下載小型的SVN內容,使用上面的WINDOWS自帶的命令行工具SVN.EXE足夠了。但是,當下載大傢伙時,常常下載到中間便失去與伺服器的聯系。如果再重新下載,非常可憐,而且往往還是不行。我在下載LIBGDX這個游戲引擎的源碼工具時便是遇到這樣的情況。因此才搜索到這個工具。

下載安裝後,這個工具是以WINDOWS資源管理器插件的形式存在的,非常人性化。你只要右鍵點擊一個你想存儲下載內容的文件夾,選擇「SVN Checkout...」選擇,然後彈出一個對話框。此後,你輸入你的SVN資源地址,便OK了。而且,這個工具下載速度非常快......

備註:在這個頁面http://bbs.mountblade.com.cn/viewthread.php?tid=168300
有幾個截圖,參考一下吧。

❸ 請問 JAVA C# C++ 這三種編程語言都是擅長開發什麼的都各有什麼優缺點我偏向游戲編程方

我覺得游戲引擎才是最重要的吧。
使用的引擎不同,對應的腳本語言也不同。
我打算學unity3d,它的腳本語言就是c#和js

下面是搜索復制過來的幾個手機游戲引擎的介紹,語言方面是以c++和java為主

電腦游戲的引擎,你可以自己去搜一下,數量多。
此外,你去各大人才網站搜索相關詞,看看各方面人家要求的數據。
1.Cocos2d-x簡介:
Cocos2d-x是一個開源的移動2D游戲框架,MIT許可證下發布的。這是一個C++ Cocos2d-iPhone項目的版本。Cocos2d-X發展的重點是圍繞Cocos2d跨平台。Cocos2d-x提供的框架外,手機游戲,可以寫在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x項目可以很容易地建立和運行在iOS,Android,黑莓Blackberry等操作系統中。Cocos2d-x還支持Windows、Mac和Linux等桌面操作系統,因此,我可以編寫的源代碼很容易在桌面操作系統中編輯和調試。
2.OGEngine簡介:
OGEngine是國際著名開源引擎AndEngine的一個分支,遵循LGPL開源協議使用OpenGL ES進行圖形繪制。同時集成了Box2D物理引擎,因此可以實現復雜的物理效果。
OGEngine主要使用Java語言開發,但在大運算量的耗時功能時,OGEngine使用了C/C++本地代碼進行開發。比如物理引擎及音頻處理。作為用戶,你只需要關注Java端就可以了,它已經把所有的本地代碼封裝好了。相比於其他android游戲引擎,OGEngine的效率優勢十分明顯。
優點:
OGEngine在AndEngine開源框架下做了以下工作以便開發者更好的學習和使用:
1、邏輯線程和渲染線程實現線程獨立;
2、編寫了UI體系,提供以線性布局,相對布局,絕對布局,幀布局為基礎的UI組件;
3、修改資源載入並提供相應工具,使得載入資源工作量大大減少;
4、增加動畫編輯器,關卡編輯器,UI編輯器進行數據對接,引擎可以跟工具結合使用開發;
5、編寫場景跳轉體系,提供方便的場景跳轉方法以及數據傳輸;
6、對實體相關類重做和分離,給實體操作提供更多方法和更方便復合實體操作;
7、提供完整的事件系統;
8、提供完整的開發文檔和學習教程。
缺點:
官方申明OGEngine支持多運行平台,不過當前發布版本只支持安卓;同時支持安卓和iOS的版本會在後續版本才發布。
3.Rokon簡介:
Rokon是一款Android 2D游戲引擎,基於OpenGL ES技術開發,物理引擎為Box2D,因此能夠實現一些較為復雜的物理效果,該項目最新版本為 2.0.3 (09/07/10)。
優點
開發文檔相當之完備,並且項目作者對反饋Bug的修正非常之神速,所以該框架的使用在目前也最為廣泛,有人乾脆將它稱為Cocos2d-iPhone引擎的Android版(業務邏輯和編碼風格上也確實很像)。
4.LGame簡介:
LGame是一款國人開發的Java游戲引擎,有Android及PC(J2SE)兩個開發版本(測試版添加了C#開發版本)。最低運行環境要求為Android 1.1。其底 層繪圖器LGrpaphics封裝有J2SE以及J2ME提供的全部Graphics API(PC版採用Graphics2D封裝,Android版採用Canvas模擬實現),所以能夠將J2SE或J2ME開發經驗直接套用其中。
優點
1、作為支持Java桌面游戲以及網頁游戲開發的全功能引擎,LGame無論對畫面繪制、精靈碰撞、特效渲染、窗體組件,還是XML操作,文本資料庫操作,HTTP操作,日誌操作等都提供有完善的內部解決方案,避免了多包配置的繁瑣與不便,同時也降低了用戶的學習曲線。
2、出於效率與程序體積兩方面考慮,LGame中所有組件皆不依賴Swing,完全採取AWT繪制而成,因此它可以將自身的運行環境壓縮到最小,一個壓縮後不足4MB的精簡JRE,已足夠支持它的運行。
缺點
1、該引擎除了基本的音效、圖形、物理、精靈等常用組件以外,也內置有Ioc、xml、http等常用Java組件的封裝,代價是jar體積較為龐大,PC版 已突破1.2MB,Android版有所簡化也在500KB左右。
2、唯一遺憾的是,該項目作者是個極其懶惰的傢伙,開發文檔從去年說到今年依舊沒有提供,只有游戲示例可供下載。
5.Libgdx簡介:
libGdx是一個跨平台的2D/3D的游戲開發框架,它由Java/C/C++語言編寫而成。它基於Apache License, Version 2.0協議,對商業使用和非商業使用均免費。
缺點
(1)精靈類等相關組件在使用上不夠簡化
(2)而且文檔也較為匱乏。
(3)僅支持2的次方的圖片尺寸。
6.JPCT簡介:
jPCT是一款基於OpenGL技術開發的3D圖形引擎(PC環境為標准OpenGL,Android為OpenGL ES), 以Java語言為基礎的,擁有功能強大的Java 3D解決方案。該引擎與LGame(此為2D游戲引擎)相類似,目前擁有PC(J2SE)以及Android兩個開發版本。最低運行環境要求為Android 1.5。

❹ 游戲開發小白如何選擇游戲引擎

2D休閑的 ... AndEngine 是採用Java的很適合,這款引擎是採用OpenGLES,但是集成設計度很高,OpenGLES不用了解太多也能輕松使用。該引擎沒有中文文檔,不過自帶有大量的實例,很多博客也有對這些實例講解,掌握這些實例,基本就能了解其框架。還有一點,他是開源的,很多方法功能,查看一下源碼就能知道其作用。他還有很多擴展,像對物理引擎Box2D的支持,這個很強大。不過,考慮到跨平台發展,現在最火熱的是cocos2d-x,可以說這個是2D引擎是最有前途的,只是不是Java的

❺ eclipse proguard怎麼混淆jar包

android應用程序的混淆打包

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示:

target=android-8

proguard.config=proguard.cfg

Eclipse會通過此配置在工程目錄生成proguard.cfg文件

2 . 生成keystore (如已有可直接利用)

按照下面的命令行 在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下,輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore

參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵 都算密碼。

命令執行後會在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下生成 android.keystore文件。

3. 在Eclipce的操作

File -> Export -> Export Android Application -> Select project -> Using the existing keystore , and input password -> select the destination APK file

經過混淆後的源代碼,原先的類名和方法名會被類似a,b,c。。。的字元所替換,混淆的原理其實也就是類名和方法名的映射。

proguard 自己考一個就行

----------------------------------------------------------------------------------------

proguard 原理

Java代碼編譯成二進制class 文件,這個class
文件也可以反編譯成源代碼 ,除了注釋外,原來的code 基本都可以看到。為了防止重要code
被泄露,我們往往需要混淆(Obfuscation code , 也就是把方法,欄位,包和類這些java
元素的名稱改成無意義的名稱,這樣代碼結構沒有變化,還可以運行,但是想弄懂代碼的架構卻很難。 proguard
就是這樣的混淆工具,它可以分析一組class 的結構,根據用戶的配置,然後把這些class 文件的可以混淆java
元素名混淆掉。在分析class 的同時,他還有其他兩個功能,刪除無效代碼(Shrinking 收縮),和代碼進行優化
(Optimization Options)。

預設情況下,proguard
會混淆所有代碼,但是下面幾種情況是不能改變java 元素的名稱,否則就會這樣就會導致程序出錯。

一, 我們用到反射的地方。

二,
我們代碼依賴於系統的介面,比如被系統代碼調用的回調方法,這種情況最復雜。

三, 是我們的java
元素名稱是在配置文件中配置好的。

所以使用proguard時,我們需要有個配置文件告訴proguard
那些java 元素是不能混淆的。

proguard 配置

最常用的配置選項

-dontwarn 預設proguard
會檢查每一個引用是否正確,但是第三方庫裡面往往有些不會用到的類,沒有正確引用。如果不配置的話,系統就會報錯。

-keep 指定的類和類成員被保留作為 入口


-keepclassmembers
指定的類成員被保留。

-keepclasseswithmembers
指定的類和類成員被保留,假如指定的類成員存在的話。

proguard 問題和風險

代碼混淆後雖然有混淆優化的好處,但是它往往也會帶來如下的幾點問題

1,混淆錯誤,用到第三方庫的時候,必須告訴 proguard
不要檢查,否則proguard 會報錯。

2,運行錯誤,當code
不能混淆的時候,我們必須要正確配置,否則程序會運行出錯,這種情況問題最多。

3,調試苦難,出錯了,錯誤堆棧是混淆後的代碼
,自己也看不懂。

為了防止混淆出問題,你需要熟悉你所有的code ,系統的架構
,以及系統和你code的集成的介面,並細心分析。 同時你必須需要一輪全面的測試。 所以混淆也還是有一定風險的。
為了避免風險,你可以只是混淆部分關鍵的代碼,但是這樣你的混淆的效果也會有所降低。

常見的不能混淆的androidCode

Android 程序
,下面這樣代碼混淆的時候要注意保留。

Android系統組件,系統組件有固定的方法被系統調用。

被Android Resource
文件引用到的。名字已經固定,也不能混淆,比如自定義的View 。

Android Parcelable ,需要使用android
序列化的。

其他Anroid 官方建議
不混淆的,如

android.app.backup.BackupAgentHelper

android.preference.Preference

com.android.vending.licensing.ILicensingService

Java序列化方法,系統序列化需要固定的方法。

枚舉 ,系統需要處理枚舉的固定方法。

本地方法,不能修改本地方法名

annotations 注釋

資料庫驅動

有些resource 文件

用到反射的地方

如何實施

現在的系統已經配置為混淆時候會保留

Android系統組件

自定義View

Android Parcelable

Android R 文件

Android Parcelable

枚舉

各個開發人員必須檢查自己的code 是否用到反射
,和其他不能混淆的地方。告訴我來修改配置文件(已經保留的就不需要了)

目前系統部檢查的第三方庫為

-dontwarn
android.support.**

-dontwarn
com.tencent.**

-dontwarn
org.dom4j.**

-dontwarn
org.slf4j.**

-dontwarn
org.http.mutipart.**

-dontwarn
org.apache.**

-dontwarn
org.apache.log4j.**

-dontwarn
org.apache.commons.logging.**

-dontwarn
org.apache.commons.codec.binary.**

-dontwarn
weibo4android.**

proguard 參數

-include {filename}
從給定的文件中讀取配置參數

-basedirectory {directoryname}

指定基礎目錄為以後相對的檔案名稱

-injars {class_path}
指定要處理的應用程序jar,war,ear和目錄

-outjars {class_path}

指定處理完後要輸出的jar,war,ear和目錄的名稱

-libraryjars {classpath}

指定要處理的應用程序jar,war,ear和目錄所需要的程序庫文件

-

指定不去忽略非公共的庫類。

-

指定不去忽略包可見的庫類的成員。

保留選項

-keep {Modifier} {class_specification}

保護指定的類文件和類的成員

-keepclassmembers {modifier}
{class_specification}
保護指定類的成員,如果此類受到保護他們會保護的更好

-keepclasseswithmembers
{class_specification}
保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。

-keepnames {class_specification}

保護指定的類和類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclassmembernames
{class_specification}
保護指定的類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclasseswithmembernames
{class_specification}
保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後)

-printseeds {filename}

列出類和類的成員-keep選項的清單,標准輸出到給定的文件

壓縮

-dontshrink
不壓縮輸入的類文件

-printusage
{filename}

-whyareyoukeeping {class_specification}

優化

-dontoptimize
不優化輸入的類文件

-assumenosideeffects
{class_specification}
優化時假設指定的方法,沒有任何副作用

-allowaccessmodification

優化時允許訪問並修改有修飾符的類和類的成員

混淆

-dontobfuscate
不混淆輸入的類文件

-printmapping
{filename}

-applymapping {filename}

重用映射增加混淆

-obfuscationdictionary {filename}

使用給定文件中的關鍵字作為要混淆方法的名稱

-overloadaggressively

混淆時應用侵入式重載

-useuniqueclassmembernames

確定統一的混淆類的成員名稱來增加混淆

-flattenpackagehierarchy {package_name}

重新包裝所有重命名的包並放在給定的單一包中

-repackageclass {package_name}

重新包裝所有重命名的類文件中放在給定的單一包中

-dontusemixedcaseclassnames

混淆時不會產生形形色色的類名

-keepattributes {attribute_name,...}
保護給定的可選屬性,例如LineNumberTable,
LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature,
and InnerClasses.

-renamesourcefileattribute {string}

設置源文件中給定的字元串常量

解決export打包的報錯

這個時候export提示「conversion to Dalvik
format failed with error
1」錯誤,網上說法有好多種,最後我還是把proguard從4.4升級到4.8就解決了。官方地址是http://proguard.sourceforge.net。上面的配置文件參數可以在這里查閱。

升級辦法很簡單,就是把android
sdk目錄下的tool/proguard目錄覆蓋一下即可。

打包出來的程序如何調試

一旦打包出來,就不能用eclipse的logcat去看了,這里可以用android
sdk中ddms.bat的tool來看,一用就發現和logcat其實還是一個東西,就是多了個設備的選擇。

使用 gson 需要的配置

當Gson用到了泛型就會有報錯,這個真給郁悶了半天,提示「Missing
type
parameter」。最後找到一個資料給了一個解決辦法,參考:http://stackoverflow.com/questio ...
sing-type-parameter。

另外我又用到了JsonObject,提交的Object裡面的members居然被改成了a。所以上面給的東西還不夠,還要加上

# 用到自己拼接的JsonObject

-keep class com.google.gson.JsonObject
{ *; }

個人建議減少這些依賴包混淆帶來的麻煩,乾脆都全部保留不混淆。例如

-keep class com.badlogic.** { *;
}

-keep class * implements
com.badlogic.gdx.utils.Json*

-keep class com.google.** { *;
}

使用libgdx需要的配置

參考http://code.google.com/p/libgdx-users/wiki/Ant

驗證打包效果

利用了apktool的反編譯工具,把打包文件又解壓了看了一下,如果包路徑、類名、變數名、方法名這些變化和你期望一致,那就OK了。命令:

apktool.bat d xxx.apk
destdir

配置實例

-injars
androidtest.jar【jar包所在地址】

-outjars
out【輸出地址】

-libraryjars
'D:\android-sdk-windows\platforms\android-9\android.jar'
【引用的庫的jar,用於解析injars所指定的jar類】

-optimizationpasses
5

-dontusemixedcaseclassnames
【混淆時不會產生形形色色的類名 】

-
【指定不去忽略非公共的庫類。 】

-dontpreverify
【不預校驗】

-verbose

-optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*
【優化】

-keep public class * extends
android.app.Activity【不進行混淆保持原樣】

-keep public class * extends
android.app.Application

-keep public class * extends
android.app.Service

-keep public class * extends
android.content.BroadcastReceiver

-keep public class * extends
android.content.ContentProvider

-keep public class * extends
android.app.backup.BackupAgentHelper

-keep public class * extends
android.preference.Preference

-keep public class
com.android.vending.licensing.ILicensingService

-keep public abstract interface
com.asqw.android.Listener{

public protected ;
【所有方法不進行混淆】

}

-keep public class
com.asqw.android{

public void Start(java.lang.String);
【對該方法不進行混淆】

}

-keepclasseswithmembernames class * {
【保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後)】

native ;

}

-keepclasseswithmembers class * {
【保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。】

public (android.content.Context,
android.util.AttributeSet);

}

-keepclasseswithmembers class *
{

public (android.content.Context,
android.util.AttributeSet, int);

}

-keepclassmembers class * extends
android.app.Activity {【保護指定類的成員,如果此類受到保護他們會保護的更好


public void
*(android.view.View);

}

-keepclassmembers enum *
{

public static **[]
values();

public static **
valueOf(java.lang.String);

}

-keep class * implements
android.os.Parcelable {【保護指定的類文件和類的成員】

public static final
android.os.Parcelable$Creator *;

}

//不混淆指定包下的類

-keep class
com.aspire.**

❻ 大神們,為什麼我這個程序單獨用printf輸出不行,但是用cout輸出或者是兩個同時輸出就可以呢

最近用libgdx進行游戲開發,開發過程中遇上一個讓spine倒序播放的需求,但之前並沒有接觸過這個功能,遇上搬出程序員神器->網路一下,你就知道。然鵝悲催的是逛了3小時,並沒有實際的進展,雖然有部分人也在問同樣的問題,但回答的可用性幾乎為零。於是,這篇文章就出來了。
為了實現這個功能,我們首先進入到源碼中去,在spine-libgdx的源碼中,在AnimationState中,有一個內部類TrackEntry,裡面定義了么一個屬性,且看:
/** Current time in seconds this track entry has been the current track entry. The track time determines
* {@link #getAnimationTime()}. The track time can be set to start the animation at a time other than 0, without affecting
* looping. */
public float getTrackTime () {
return trackTime;
}
public void setTrackTime (float trackTime) {
this.trackTime = trackTime;
}
---------------------

❼ 有java混淆器的eclipse插件嗎

android應用程序的混淆打包

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示:

target=android-8

proguard.config=proguard.cfg

Eclipse會通過此配置在工程目錄生成proguard.cfg文件

2 . 生成keystore (如已有可直接利用)

按照下面的命令行 在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下,輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore

參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵 都算密碼。

命令執行後會在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下生成 android.keystore文件。

3. 在Eclipce的操作

File -> Export -> Export Android Application -> Select project -> Using the existing keystore , and input password -> select the destination APK file

經過混淆後的源代碼,原先的類名和方法名會被類似a,b,c。。。的字元所替換,混淆的原理其實也就是類名和方法名的映射。

proguard 自己考一個就行

----------------------------------------------------------------------------------------

proguard 原理

Java代碼編譯成二進制class 文件,這個class
文件也可以反編譯成源代碼 ,除了注釋外,原來的code 基本都可以看到。為了防止重要code
被泄露,我們往往需要混淆(Obfuscation code , 也就是把方法,欄位,包和類這些java
元素的名稱改成無意義的名稱,這樣代碼結構沒有變化,還可以運行,但是想弄懂代碼的架構卻很難。 proguard
就是這樣的混淆工具,它可以分析一組class 的結構,根據用戶的配置,然後把這些class 文件的可以混淆java
元素名混淆掉。在分析class 的同時,他還有其他兩個功能,刪除無效代碼(Shrinking 收縮),和代碼進行優化
(Optimization Options)。

預設情況下,proguard
會混淆所有代碼,但是下面幾種情況是不能改變java 元素的名稱,否則就會這樣就會導致程序出錯。

一, 我們用到反射的地方。

二,
我們代碼依賴於系統的介面,比如被系統代碼調用的回調方法,這種情況最復雜。

三, 是我們的java
元素名稱是在配置文件中配置好的。

所以使用proguard時,我們需要有個配置文件告訴proguard
那些java 元素是不能混淆的。

proguard 配置

最常用的配置選項

-dontwarn 預設proguard
會檢查每一個引用是否正確,但是第三方庫裡面往往有些不會用到的類,沒有正確引用。如果不配置的話,系統就會報錯。

-keep 指定的類和類成員被保留作為 入口


-keepclassmembers
指定的類成員被保留。

-keepclasseswithmembers
指定的類和類成員被保留,假如指定的類成員存在的話。

proguard 問題和風險

代碼混淆後雖然有混淆優化的好處,但是它往往也會帶來如下的幾點問題

1,混淆錯誤,用到第三方庫的時候,必須告訴 proguard
不要檢查,否則proguard 會報錯。

2,運行錯誤,當code
不能混淆的時候,我們必須要正確配置,否則程序會運行出錯,這種情況問題最多。

3,調試苦難,出錯了,錯誤堆棧是混淆後的代碼
,自己也看不懂。

為了防止混淆出問題,你需要熟悉你所有的code ,系統的架構
,以及系統和你code的集成的介面,並細心分析。 同時你必須需要一輪全面的測試。 所以混淆也還是有一定風險的。
為了避免風險,你可以只是混淆部分關鍵的代碼,但是這樣你的混淆的效果也會有所降低。

常見的不能混淆的androidCode

Android 程序
,下面這樣代碼混淆的時候要注意保留。

Android系統組件,系統組件有固定的方法被系統調用。

被Android Resource
文件引用到的。名字已經固定,也不能混淆,比如自定義的View 。

Android Parcelable ,需要使用android
序列化的。

其他Anroid 官方建議
不混淆的,如

android.app.backup.BackupAgentHelper

android.preference.Preference

com.android.vending.licensing.ILicensingService

Java序列化方法,系統序列化需要固定的方法。

枚舉 ,系統需要處理枚舉的固定方法。

本地方法,不能修改本地方法名

annotations 注釋

資料庫驅動

有些resource 文件

用到反射的地方

如何實施

現在的系統已經配置為混淆時候會保留

Android系統組件

自定義View

Android Parcelable

Android R 文件

Android Parcelable

枚舉

各個開發人員必須檢查自己的code 是否用到反射
,和其他不能混淆的地方。告訴我來修改配置文件(已經保留的就不需要了)

目前系統部檢查的第三方庫為

-dontwarn
android.support.**

-dontwarn
com.tencent.**

-dontwarn
org.dom4j.**

-dontwarn
org.slf4j.**

-dontwarn
org.http.mutipart.**

-dontwarn
org.apache.**

-dontwarn
org.apache.log4j.**

-dontwarn
org.apache.commons.logging.**

-dontwarn
org.apache.commons.codec.binary.**

-dontwarn
weibo4android.**

proguard 參數

-include {filename}
從給定的文件中讀取配置參數

-basedirectory {directoryname}

指定基礎目錄為以後相對的檔案名稱

-injars {class_path}
指定要處理的應用程序jar,war,ear和目錄

-outjars {class_path}

指定處理完後要輸出的jar,war,ear和目錄的名稱

-libraryjars {classpath}

指定要處理的應用程序jar,war,ear和目錄所需要的程序庫文件

-

指定不去忽略非公共的庫類。

-

指定不去忽略包可見的庫類的成員。

保留選項

-keep {Modifier} {class_specification}

保護指定的類文件和類的成員

-keepclassmembers {modifier}
{class_specification}
保護指定類的成員,如果此類受到保護他們會保護的更好

-keepclasseswithmembers
{class_specification}
保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。

-keepnames {class_specification}

保護指定的類和類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclassmembernames
{class_specification}
保護指定的類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclasseswithmembernames
{class_specification}
保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後)

-printseeds {filename}

列出類和類的成員-keep選項的清單,標准輸出到給定的文件

壓縮

-dontshrink
不壓縮輸入的類文件

-printusage
{filename}

-whyareyoukeeping {class_specification}

優化

-dontoptimize
不優化輸入的類文件

-assumenosideeffects
{class_specification}
優化時假設指定的方法,沒有任何副作用

-allowaccessmodification

優化時允許訪問並修改有修飾符的類和類的成員

混淆

-dontobfuscate
不混淆輸入的類文件

-printmapping
{filename}

-applymapping {filename}

重用映射增加混淆

-obfuscationdictionary {filename}

使用給定文件中的關鍵字作為要混淆方法的名稱

-overloadaggressively

混淆時應用侵入式重載

-useuniqueclassmembernames

確定統一的混淆類的成員名稱來增加混淆

-flattenpackagehierarchy {package_name}

重新包裝所有重命名的包並放在給定的單一包中

-repackageclass {package_name}

重新包裝所有重命名的類文件中放在給定的單一包中

-dontusemixedcaseclassnames

混淆時不會產生形形色色的類名

-keepattributes {attribute_name,...}
保護給定的可選屬性,例如LineNumberTable,
LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature,
and InnerClasses.

-renamesourcefileattribute {string}

設置源文件中給定的字元串常量

解決export打包的報錯

這個時候export提示「conversion to Dalvik
format failed with error
1」錯誤,網上說法有好多種,最後我還是把proguard從4.4升級到4.8就解決了。

升級辦法很簡單,就是把android
sdk目錄下的tool/proguard目錄覆蓋一下即可。

打包出來的程序如何調試

一旦打包出來,就不能用eclipse的logcat去看了,這里可以用android
sdk中ddms.bat的tool來看,一用就發現和logcat其實還是一個東西,就是多了個設備的選擇。

使用 gson 需要的配置

當Gson用到了泛型就會有報錯,這個真給郁悶了半天,提示「Missing
type
parameter」。最後找到一個資料給了一個解決辦法,參考:http://stackoverflow.com/questio ...
sing-type-parameter。

另外我又用到了JsonObject,提交的Object裡面的members居然被改成了a。所以上面給的東西還不夠,還要加上

# 用到自己拼接的JsonObject

-keep class com.google.gson.JsonObject
{ *; }

個人建議減少這些依賴包混淆帶來的麻煩,乾脆都全部保留不混淆。例如

-keep class com.badlogic.** { *;
}

-keep class * implements
com.badlogic.gdx.utils.Json*

-keep class com.google.** { *;
}

使用libgdx需要的配置

驗證打包效果

利用了apktool的反編譯工具,把打包文件又解壓了看了一下,如果包路徑、類名、變數名、方法名這些變化和你期望一致,那就OK了。命令:

apktool.bat d xxx.apk
destdir

配置實例

-injars
androidtest.jar【jar包所在地址】

-outjars
out【輸出地址】

-libraryjars
'D:\android-sdk-windows\platforms\android-9\android.jar'
【引用的庫的jar,用於解析injars所指定的jar類】

-optimizationpasses
5

-dontusemixedcaseclassnames
【混淆時不會產生形形色色的類名 】

-
【指定不去忽略非公共的庫類。 】

-dontpreverify
【不預校驗】

-verbose

-optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*
【優化】

-keep public class * extends
android.app.Activity【不進行混淆保持原樣】

-keep public class * extends
android.app.Application

-keep public class * extends
android.app.Service

-keep public class * extends
android.content.BroadcastReceiver

-keep public class * extends
android.content.ContentProvider

-keep public class * extends
android.app.backup.BackupAgentHelper

-keep public class * extends
android.preference.Preference

-keep public class
com.android.vending.licensing.ILicensingService

-keep public abstract interface
com.asqw.android.Listener{

public protected ;
【所有方法不進行混淆】

}

-keep public class
com.asqw.android{

public void Start(java.lang.String);
【對該方法不進行混淆】

}

-keepclasseswithmembernames class * {
【保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後)】

native ;

}

-keepclasseswithmembers class * {
【保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。】

public (android.content.Context,
android.util.AttributeSet);

}

-keepclasseswithmembers class *
{

public (android.content.Context,
android.util.AttributeSet, int);

}

-keepclassmembers class * extends
android.app.Activity {【保護指定類的成員,如果此類受到保護他們會保護的更好


public void
*(android.view.View);

}

-keepclassmembers enum *
{

public static **[]
values();

public static **
valueOf(java.lang.String);

}

-keep class * implements
android.os.Parcelable {【保護指定的類文件和類的成員】

public static final
android.os.Parcelable$Creator *;

}

//不混淆指定包下的類

-keep class
com.aspire.**

❽ GitHub上面有哪些經典的java框架源碼

  • Bazel:來自Google的構建工具,可以快速、可靠地構建代碼。官網

  • Gradle:使用Groovy(非XML)進行增量構建,可以很好地與Maven依賴管理配合工作。官網

  • Buck:Facebook構建工具。官網

  • 位元組碼操作

    編程方式操作位元組碼的開發庫。

  • ASM:通用底層位元組碼操作和分析開發庫。官網

  • Byte Buddy:使用流式API進一步簡化位元組碼生成。官網

  • Byteman:在運行時通過DSL(規則)操作位元組碼進行測試和故障排除。官網

  • Javassist:一個簡化位元組碼編輯嘗試。官網

  • 集群管理

    在集群內動態管理應用程序的框架。

  • Apache Aurora:Apache Aurora是一個Mesos框架,用於長時間運行服務和定時任務(cron job)。官網

  • Singularity:Singularity是一個Mesos框架,方便部署和操作。它支持Web Service、後台運行、調度作業和一次性任務。官網

  • 代碼分析

    測量代碼指標和質量工具。

  • Checkstyle:代碼編寫規范和標准靜態分析工具。官網

  • Error Prone:將常見編程錯誤作為運行時錯誤報告。官網

  • FindBugs:通過位元組碼靜態分析查找隱藏bug。官網

  • jQAssistant:使用基於Neo4J查詢語言進行代碼靜態分析。官網

  • PMD:對源代碼分析查找不良的編程習慣。官網

  • SonarQube:通過插件集成其它分析組件,對過去一段時間內的數據進行統計。官網

  • 編譯器生成工具

    用來創建解析器、解釋器或編譯器的框架。

  • ANTLR:復雜的全功能自頂向下解析框架。官網

  • JavaCC:JavaCC是更加專門的輕量級工具,易於上手且支持語法超前預測。官網

  • 外部配置工具

    支持外部配置的開發庫。

  • config:針對JVM語言的配置庫。官網

  • owner:減少冗餘配置屬性。官網

  • 約束滿足問題求解程序

    幫助解決約束滿足問題的開發庫。

  • Choco:可直接使用的約束滿足問題求解程序,使用了約束規劃技術。官網

  • JaCoP:為FlatZinc語言提供了一個介面,可以執行MiniZinc模型。官網

  • OptaPlanner:企業規劃與資源調度優化求解程序。官網

  • Sat4J:邏輯代數與優化問題最先進的求解程序。官網

  • 持續集成

  • Bamboo:Atlassian解決方案,可以很好地集成Atlassian的其他產品。可以選擇開源許可,也可以購買商業版。官網

  • CircleCI:提供託管服務,可以免費試用。官網

  • Codeship:提供託管服務,提供有限的免費模式。官網

  • fabric8:容器集成平台。官網

  • Go:ThoughtWork開源解決方案。官網

  • Jenkins:支持基於伺服器的部署服務。官網

  • TeamCity:JetBrain的持續集成解決方案,有免費版。官網

  • Travis:通常用作開源項目的託管服務。官網

  • Buildkite: 持續集成工具,用簡單的腳本就能設置pipeline,而且能快速構建,可以免費試用。官網

  • CSV解析

    簡化CSV數據讀寫的框架與開發庫

  • uniVocity-parsers:速度最快功能最全的CSV開發庫之一,同時支持TSV與固定寬度記錄的讀寫。官網

  • 資料庫

    簡化資料庫交互的相關工具。

  • Apache Phoenix:HBase針對低延時應用程序的高性能關系資料庫層。官網

  • Crate:實現了數據同步、分片、縮放、復制的分布式數據存儲。除此之外還可以使用基於SQL的語法跨集群查詢。官網

  • Flyway:簡單的資料庫遷移工具。官網

  • H2:小型SQL資料庫,以可以作為內存資料庫使用著稱。官網

  • HikariCP:高性能JDBC連接工具。官網

  • JDBI:便捷的JDBC抽象。官網

  • Protobuf:Google數據交換格式。官網

  • SBE:簡單二進制編碼,是最快速的消息格式之一。官網

  • Wire:整潔輕量級協議緩存。官網

  • 幫實現依賴翻轉範式的開發庫。官網

  • Apache DeltaSpike:CDI擴展框架。官網

  • Dagger2:編譯時注入框架,不需要使用反射。官網

  • Guice:可以匹敵Dagger的輕量級注入框架。官網

  • HK2:輕量級動態依賴注入框架。官網

  • 開發流程增強工具

    從最基本的層面增強開發流程。

  • ADT4J:針對代數數據類型的JSR-269代碼生成器。官網

  • AspectJ:面向切面編程(AOP)的無縫擴展。官網

  • Auto:源代碼生成器集合。官網

  • DCEVM:通過修改JVM在運行時支持對已載入的類進行無限次重定義。官網

  • HotswapAgent:支持無限次重定義運行時類與資源。官網

  • Immutables:類似Scala的條件類。官網

  • JHipster:基於Spring Boot與AngularJS應用程序的Yeoman源代碼生成器。官網

  • JRebel:無需重新部署,可以即時重新載入代碼與配置的商業軟體。官網

  • Lombok:減少冗餘的代碼生成器。官網

  • Spring Loaded:類重載代理。官網

  • vert.x:多語言事件驅動應用框架。官網

  • 分布式應用

    用來編寫分布式容錯應用的開發庫和框架。

  • Akka:用來編寫分布式容錯並發事件驅動應用程序的工具和運行時。官網

  • Apache Storm:實時計算系統。官網

  • Apache ZooKeeper:針對大型分布式系統的協調服務,支持分布式配置、同步和名稱注冊。官網

  • Hazelcast:高可擴展內存數據網格。官網

  • Hystrix:提供延遲和容錯。官網

  • JGroups:提供可靠的消息傳遞和集群創建的工具。官網

  • Orbit:支持虛擬角色(Actor),在傳統角色的基礎上增加了另外一層抽象。官網

  • Quasar:為JVM提供輕量級線程和角色。官網

  • 分布式資料庫

    對應用程序而言,在分布式系統中的資料庫看起來就像是只有一個數據源。

  • Apache Cassandra:列式資料庫,可用性高且沒有單點故障。官網

  • Apache HBase:針對大數據的Hadoop資料庫。官網

  • Druid:實時和歷史OLAP數據存儲,在聚集查詢和近似查詢方面表現不俗。官網

  • Infinispan:針對緩存的高並發鍵值對數據存儲。官網

  • 發布

    以本機格式發布應用程序的工具。

  • Bintray:發布二進制文件版本控制工具。可以於Maven或Gradle一起配合使用。提供開源免費版本和幾種商業收費版本。官網

  • Central Repository:最大的二進制組件倉庫,面向開源社區提供免費服務。Apache Maven默認使用Central官網Repository,也可以在所有其他構建工具中使用。

  • IzPack:為跨平台部署建立創作工具(Authoring Tool)。官網

  • JitPack:打包GitHub倉庫的便捷工具。可根據需要構建Maven、Gradle項目,發布可立即使用的組件。官網

  • Launch4j:將JAR包裝為輕量級本機Windows可執行程序。官網

  • Nexus:支持代理和緩存功能的二進制管理工具。官網

  • packr:將JAR、資源和JVM打包成Windows、Linux和Mac OS X本地發布文件。官網

  • 文檔處理工具

    處理Office文檔的開發庫。

  • Apache POI:支持OOXML規范(XLSX、DOCX、PPTX)以及OLE2規范(XLS、DOC、PPT)。官網

  • documents4j:使用第三方轉換器進行文檔格式轉換,轉成類似MS Word這樣的格式。官網

  • jOpenDocument:處理OpenDocument格式(由Sun公司提出基於XML的文檔格式)。官網

  • 函數式編程

    函數式編程支持庫。

  • Cyclops:支持一元(Monad)操作和流操作工具類、comprehension(List語法)、模式匹配、trampoline等特性。官網

  • Fugue:Guava的函數式編程擴展。官網

  • Functional Java:實現了多種基礎和高級編程抽象,用來輔助面向組合開發(composition-oriented development)。官網

  • Javaslang:一個函數式組件庫,提供持久化數據類型和函數式控制結構。官網

  • jOOλ:旨在填補Java 8 lambda差距的擴展,提供了眾多缺失的類型和一組豐富的順序流API。官網

  • 游戲開發

    游戲開發框架。

  • jMonkeyEngine:現代3D游戲開發引擎。官網

  • libGDX:全面的跨平台高級框架。官網

  • LWJGL:對OpenGL/CL/AL等技術進行抽象的健壯框架。官網

  • GUI

    現代圖形化用戶界面開發庫。

  • JavaFX:Swing的後繼者。官網

  • Scene Builder:開發JavaFX應用的可視化布局工具。官網

  • 高性能計算

    涵蓋了從集合到特定開發庫的高性能計算相關工具。

  • Agrona:高性能應用中常見的數據結構和工具方法。官網

  • Disruptor:線程間消息傳遞開發庫。官網

  • fastutil:快速緊湊的特定類型集合(Collection)。官網

  • GS Collections:受Smalltalk啟發的集合框架。官網

  • HPPC:基礎類型集合。官網

  • Javolution:實時和嵌入式系統的開發庫。官網

  • JCTools:JDK中缺失的並發工具。官網

  • Koloboke:Hash set和hash map。官網

  • Trove:基礎類型集合。官網

  • High-scale-bli:Cliff Click 個人開發的高性能並發庫官網

  • IDE

    簡化開發的集成開發環境。

  • Eclipse:老牌開源項目,支持多種插件和編程語言。官網

  • IntelliJ IDEA:支持眾多JVM語言,是安卓開發者好的選擇。商業版主要針對企業客戶。官網

  • NetBeans:為多種技術提供集成化支持,包括Java SE、Java EE、資料庫訪問、HTML5

  • Imgscalr:純Java 2D實現,簡單、高效、支持硬體加速的圖像縮放開發庫。官網

  • Picasso:安卓圖片下載和圖片緩存開發庫。官網

  • Thumbnailator:Thumbnailator是一個高質量Java縮略圖開發庫。官網

  • ZXing:支持多種格式的一維、二維條形碼圖片處理開發庫。官網

  • im4java: 基於ImageMagick或GraphicsMagick命令行的圖片處理開發庫,基本上ImageMagick能夠支持的圖片格式和處理方式都能夠處理。官網

  • Apache Batik:在Java應用中程序以SVG格式顯示、生成及處理圖像的工具集,包括SVG解析器、SVG生成器、SVG DOM等模塊,可以集成使用也可以單獨使用,還可以擴展自定義的SVG標簽。官網

  • JSON

    簡化JSON處理的開發庫。

  • Genson:強大且易於使用的Java到JSON轉換開發庫。官網

  • Gson:谷歌官方推出的JSON處理庫,支持在對象與JSON之間雙向序列化,性能良好且可以實時調用。官網

  • Jackson:與GSON類似,在頻繁使用時性能更佳。官網

  • LoganSquare:基於Jackson流式API,提供對JSON解析和序列化。比GSON與Jackson組合方式效果更好。官網

  • Fastjson:一個Java語言編寫的高性能功能完善的JSON庫。官網

  • Kyro:快速、高效、自動化的Java對象序列化和克隆庫。官網

  • JVM與JDK

    目前的JVM和JDK實現。

  • JDK 9:JDK 9的早期訪問版本。官網

  • OpenJDK:JDK開源實現。官網

  • 基於JVM的語言

    除Java外,可以用來編寫JVM應用程序的編程語言。

  • Scala:融合了面向對象和函數式編程思想的靜態類型編程語言。官網

  • Groovy:類型可選(Optionally typed)的動態語言,支持靜態類型和靜態編譯。目前是一個Apache孵化器項目。官網

  • Clojure:可看做現代版Lisp的動態類型語言。官網

  • Ceylon:RedHat開發的面向對象靜態類型編程語言。官網

  • Kotlin:JetBrain針對JVM、安卓和瀏覽器提供的靜態類型編程語言。官網

  • Xtend:一種靜態編程語言,能夠將其代碼轉換為簡潔高效的Java代碼,並基於JVM運行。官網

  • 日誌

    記錄應用程序行為日誌的開發庫。

  • Apache Log4j 2:使用強大的插件和配置架構進行完全重寫。官網

  • kibana:分析及可視化日誌文件。官網

  • Logback:強健的日期開發庫,通過Groovy提供很多有趣的選項。官網

  • logstash:日誌文件管理工具。官網

  • Metrics:通過JMX或HTTP發布參數,並且支持存儲到資料庫。官網

  • SLF4J:日誌抽象層,需要與具體的實現配合使用。官網

  • 機器學習

    提供具體統計演算法的工具。其演算法可從數據中學習。

  • Apache Flink:快速、可靠的大規模數據處理引擎。官網

  • Apache Hadoop:在商用硬體集群上用來進行大規模數據存儲的開源軟體框架。官網

  • Apache Mahout:專注協同過濾、聚類和分類的可擴展演算法。官網

  • Apache Spark:開源數據分析集群計算框架。官網

  • DeepDive:從非結構化數據建立結構化信息並集成到已有資料庫的工具。官網

  • Deeplearning4j:分布式多線程深度學習開發庫。官網

  • H2O:用作大數據統計的分析引擎。官網

  • Weka:用作數據挖掘的演算法集合,包括從預處理到可視化的各個層次。官網

  • QuickML:高效機器學習庫。官網、GitHub

  • 消息傳遞

    在客戶端之間進行消息傳遞,確保協議獨立性的工具。

  • Aeron:高效可擴展的單播、多播消息傳遞工具。官網

  • Apache ActiveMQ:實現JMS的開源消息代理(broker),可將同步通訊轉為非同步通訊。官網

  • Apache Camel:通過企業級整合模式(Enterprise Integration Pattern EIP)將不同的消息傳輸API整合在一起。官網

  • Apache Kafka:高吞吐量分布式消息系統。官網

  • Hermes:快速、可靠的消息代理(Broker),基於Kafka構建。官網

  • JBoss HornetQ:清晰、准確、模塊化,可以方便嵌入的消息工具。官網

  • JeroMQ:ZeroMQ的純Java實現。官網

  • Smack:跨平台XMPP客戶端函數庫。官網

  • Openfire:是開源的、基於XMPP、採用Java編程語言開發的實時協作伺服器。 Openfire安裝和使用都非常簡單,並可利用Web界面進行管理。官網GitHub

  • Spark:是一個開源,跨平台IM客戶端。它的特性支持集組聊天,電話集成和強大安全性能。如果企業內部部署IM使用Openfire+Spark是最佳的組合。官網GitHub

  • Tigase: 是一個輕量級的可伸縮的 Jabber/XMPP 伺服器。無需其他第三方庫支持,可以處理非常高的復雜和大量的用戶數,可以根據需要進行水平擴展。官網

  • 雜項

    未分類其它資源。

  • Design Patterns:實現並解釋了最常見的設計模式。官網

  • Jimfs:內存文件系統。官網

  • Lanterna:類似curses的簡單console文本GUI函數庫。官網

  • LightAdmin:可插入式CRUD UI函數庫,可用來快速應用開發。官網

  • OpenRefine:用來處理混亂數據的工具,包括清理、轉換、使用Web Service進行擴展並將其關聯到資料庫。官網

  • RoboVM:Java編寫原生iOS應用。官網

  • Quartz:強大的任務調度庫.官網

  • 應用監控工具

    監控生產環境中應用程序的工具。

  • AppDynamics:性能監測商業工具。官網

  • JavaMelody:性能監測和分析工具。官網

  • Kamon:Kamon用來監測在JVM上運行的應用程序。官網

  • New Relic:性能監測商業工具。官網

  • SPM:支持對JVM應用程序進行分布式事務追蹤的性能監測商業工具。官網

  • Takipi:產品運行時錯誤監測及調試商業工具。官網

  • 原生開發庫

    用來進行特定平台開發的原生開發庫。

  • JNA:不使用JNI就可以使用原生開發庫。此外,還為常見系統函數提供了介面。官網

  • 自然語言處理

    用來專門處理文本的函數庫。

  • Apache OpenNLP:處理類似分詞等常見任務的工具。官網

  • CoreNLP:斯坦佛CoreNLP提供了一組基礎工具,可以處理類似標簽、實體名識別和情感分析這樣的任務。官網

  • LingPipe:一組可以處理各種任務的工具集,支持POS標簽、情感分析等。官網

  • Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。官網

  • 網路

    網路編程函數庫。

  • Async Http Client:非同步HTTP和WebSocket客戶端函數庫。官網

  • Grizzly:NIO框架,在Glassfish中作為網路層使用。官網

  • Netty:構建高性能網路應用程序開發框架。官網

  • OkHttp:一個Android和Java應用的HTTP+SPDY客戶端。官網

  • Undertow:基於NIO實現了阻塞和非阻塞API的Web伺服器,在WildFly中作為網路層使用。官網

  • ORM

    處理對象持久化的API。

  • Ebean:支持快速數據訪問和編碼的ORM框架。官網

  • EclipseLink:支持許多持久化標准,JPA、JAXB、JCA和SDO。官網

  • Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。官網

  • MyBatis:帶有存儲過程或者SQL語句的耦合對象(Couples object)。官網

  • OrmLite:輕量級開發包,免除了其它ORM產品中的復雜性和開銷。官網

  • Nutz:另一個SSH。官網,Github

  • JFinal:JAVA WEB + ORM框架。官網,Github

  • PDF

    用來幫助創建PDF文件的資源。

  • Apache FOP:從XSL-FO創建PDF。官網

  • Apache PDFBox:用來創建和操作PDF的工具集。官網

  • DynamicReports:JasperReports的精簡版。官網

  • flyingsaucer:XML/XHTML和CSS 2.1渲染器。官網

  • iText:一個易於使用的PDF函數庫,用來編程創建PDF文件。注意,用於商業用途時需要許可證。官網

  • JasperReports:一個復雜的報表引擎。官網

  • 性能分析

    性能分析、性能剖析及基準測試工具。

  • jHiccup:提供平台中JVM暫停的日誌和記錄。官網

  • JMH:JVM基準測試工具。官網

  • JProfiler:商業分析器。官網

  • LatencyUtils:測量和報告延遲的工具。官網

  • VisualVM:對運行中的應用程序信息提供了可視化界面。官網

  • YourKit Java Profiler:商業分析器。官網

  • 響應式開發庫

    用來開發響應式應用程序的開發庫。

  • Reactive Streams:非同步流處理標准,支持非阻塞式反向壓力(backpressure)。官網

  • Reactor:構建響應式快速數據(fast-data)應用程序的開發庫。官網

  • RxJava:通過JVM可觀察序列(observable sequence)構建非同步和基於事件的程序。官網

  • REST框架

    用來創建RESTful 服務的框架。

  • Dropwizard:偏向於自己使用的Web框架。用來構建Web應用程序,使用了Jetty、Jackson、Jersey和Metrics。官網

  • Feign:受Retrofit、JAXRS-2.0和WebSocket啟發的HTTP客戶端連接器(binder)。官網

  • Jersey:JAX-RS參考實現。官網

  • RESTEasy:經過JAX-RS規范完全認證的可移植實現。官網

  • RestExpress:一個Java類型安全的REST客戶端。官網

  • RestX:基於註解處理和編譯時源碼生成的框架。官網

  • Retrofit:類型安全的REST客戶端。官網

  • Spark:受到Sinatra啟發的Java REST框架。官網

  • Swagger:Swagger是一個規范且完整的框架,提供描述、生產、消費和可視化RESTful Web Service。官網

  • Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網

  • 科學計算與分析

    用於科學計算和分析的函數庫。

  • DataMelt:用於科學計算、數據分析及數據可視化的開發環境。官網

  • JGraphT:支持數學圖論對象和演算法的圖形庫。官網

  • JScience:用來進行科學測量和單位的一組類。官網

  • 搜索引擎

    文檔索引引擎,用於搜索和分析。

  • Apache Solr:一個完全的企業搜索引擎。為高吞吐量通信進行了優化。官網

  • Elasticsearch:一個分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web介面和無schema的JSON文檔。官網

  • Apache Lucene:是一個開放源代碼的全文檢索引擎工具包,是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。官網

  • 安全

    用於處理安全、認證、授權或會話管理的函數庫。

  • Apache Shiro:執行認證、授權、加密和會話管理。官網

  • Bouncy Castle,涵蓋了從基礎的幫助函數到PGP/SMIME操作。官網:多途加密開發庫。支持JCA提供者(JCA provider)

  • Cryptomator:在雲上進行客戶端跨平台透明加密。官網

  • Keycloak:為瀏覽器應用和RESTful Web Service集成SSO和IDM。目前還處於beta版本,但是看起來非常有前途。官網

  • PicketLink:PicketLink是一個針對Java應用進行安全和身份認證管理的大型項目(Umbrella Project)。官網

  • 序列化

    用來高效處理序列化的函數庫。

  • FlatBuffers:高效利用內存的序列化函數庫,無需解包和解析即可高效訪問序列化數據。官網

  • Kryo:快速、高效的對象圖形序列化框架。官網

  • FST:提供兼容JDK的高性能對象圖形序列化。官網

  • MessagePack:一種高效的二進制序列化格式。官網

  • 應用伺服器

    用來部署應用程序的伺服器。

  • Apache Tomcat:針對Servlet和JSP的應用伺服器,健壯性好且適用性強。官網

  • Apache TomEE:Tomcat加Java EE。官網

  • Jetty:輕量級、小巧的應用伺服器,通常會嵌入到項目中。官網

  • WebSphere Liberty:輕量級、模塊化應用伺服器,由IBM開發。官網

  • WildFly:之前被稱作JBoss,由Red Hat開發。支持很多Java EE功能。官網

  • 模板引擎

    在模板中替換表達式的工具。

  • Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板。官網

  • FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關系。官網

  • Handlebars.java:使用Java編寫的模板引擎,邏輯簡單,支持語義擴展(semantic Mustache)。官網

  • Thymeleaf:旨在替換JSP,支持XML文件的工具。官網

  • 測試

    測試內容從對象到介面,涵蓋性能測試和基準測試工具。

  • Apache JMeter:功能性測試和性能評測。官網

  • Arquillian:集成測試和功能行測試平台,集成Java EE容器。官網

  • AssertJ:支持流式斷言提高測試的可讀性。官網

  • Awaitility:用來同步非同步操作的DSL。官網

  • Cucumber:BDD測試框架。官網

  • Gatling:設計為易於使用、可維護的和高性能負載測試工具。官網

  • Hamcrest:可用來靈活創建意圖(intent)表達式的匹配器。官網

  • JMockit:用來模擬靜態、final方法等。官網

  • JUnit:通用測試框架。官網

  • Mockito:在自動化單元測試中創建測試對象,為TDD或BDD提供支持。官網

  • PowerMock: 支持模擬靜態方法、構造函數、final類和方法、私有方法以及移除靜態初始化器的模擬工具。官網

  • REST Assured:為REST/HTTP服務提供方便測試的Java DSL。官網

  • Selenide:為Selenium提供精準的周邊API,用來編寫穩定且可讀的UI測試。官網

  • Selenium:為Web應用程序提供可移植軟體測試框架。官網

  • Spock:JUnit-compatible framework featuring an expressive Groovy-derived specification language.官網兼容JUnit框架,支持衍生的Groovy范的語言。

  • TestNG:測試框架。官網

  • Truth:Google的斷言和命題(proposition)框架。官網

  • Unitils:模塊化測試函數庫,支持單元測試和集成測試。官網

  • WireMock:Web Service測試樁(Stub)和模擬函數。官網

  • 通用工具庫

    通用工具類函數庫。

  • Apache Commons:提供各種用途的函數,比如配置、驗證、集合、文件上傳或XML處理等。官網

  • args4j:命令行參數解析器。官網

  • CRaSH:為運行進行提供CLI。官網

  • Gephi:可視化跨平台網路圖形化操作程序。官網

  • Guava:集合、緩存、支持基本類型、並發函數庫、通用註解、字元串處理、I/O等。官網

  • JADE:構建、調試多租戶系統的框架和環境。官網

  • javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭議。官網

  • JCommander:命令行參數解析器。官網

  • Protégé:提供存在論(ontology)編輯器以及構建知識系統的框架。官網

  • 網路爬蟲

    用於分析網站內容的函數庫。

  • Apache Nutch:可用於生產環境的高度可擴展、可伸縮的網路爬蟲。官網

  • Crawler4j:簡單的輕量級網路爬蟲。官網

  • JSoup:刮取、解析、操作和清理HTML。官網

  • Web框架

    用於處理Web應用程序不同層次間通訊的框架。

  • Apache Tapestry:基於組件的框架,使用Java創建動態、強健的、高度可擴展的Web應用程序。官網

  • Apache Wicket:基於組件的Web應用框架,與Tapestry類似帶有狀態顯示GUI。官網

  • Google Web Toolkit:一組Web開發工具集,包含在客戶端將Java代碼轉為JavaScript的編譯器、XML解析器、RCP官網API、JUnit集成、國際化支持和GUI控制項。

  • Grails:Groovy框架,旨在提供一個高效開發環境,使用約定而非配置、沒有XML並支持混入(mixin)。官網

  • Ninja:Java全棧Web開發框架。非常穩固、快速和高效。官網

  • Pippo:小型、高度模塊化的類Sinatra框架。官網

  • Play:使用約定而非配置,支持代碼熱載入並在瀏覽器中顯示錯誤。官網

  • PrimeFaces:JSF框架,提供免費和帶支持的商業版本。包括若干前端組件。官網

  • Ratpack:一組Java開發函數庫,用於構建快速、高效、可擴展且測試完備的HTTP應用程序。官網

  • Spring Boot:微框架,簡化了Spring新程序的開發過程。官網

  • Spring:旨在簡化Java EE的開發過程,提供依賴注入相關組件並支持面向切面編程。官網

  • Vaadin:基於GWT構建的事件驅動框架。使用服務端架構,客戶端使用Ajax。官網

  • Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網

  • 業務流程管理套件

    流程驅動的軟體系統構建。

  • jBPM:非常靈活的業務流程管理框架,致力於構建開發與業務分析人員之間的橋梁。官網

  • Activity:輕量級工作流和業務流程管理框架。官網github

  • 資源

    社區

熱點內容
ipad文件怎麼解壓縮 發布:2024-10-05 23:06:28 瀏覽:163
存儲伺服器主控晶元 發布:2024-10-05 23:04:33 瀏覽:570
php學徒 發布:2024-10-05 23:04:30 瀏覽:439
活字格手機端清除緩存了什麼辦 發布:2024-10-05 23:03:23 瀏覽:870
阿杜訪問 發布:2024-10-05 22:44:23 瀏覽:600
我的世界怎麼在別的伺服器開掛 發布:2024-10-05 22:31:14 瀏覽:295
下沉演算法 發布:2024-10-05 21:59:43 瀏覽:996
資料庫管理系統的開發 發布:2024-10-05 21:58:02 瀏覽:140
人員最低配置方案怎麼寫 發布:2024-10-05 21:56:26 瀏覽:766
智邦國際伺服器ip 發布:2024-10-05 21:47:37 瀏覽:597