如何用手機搭建java模組伺服器
安裝JAVA程序方法:
在網站上搜索一個APK格式的JAVA虛擬機,下載安裝程序後安裝在手機上,
安裝後手機上「所有程序」中增加此程序的圖標,如下圖(安裝方法與安裝其他程序一樣,通過手機瀏覽器下載安裝或通過電腦下載安裝包)
② 如何部署android伺服器端的java代碼
Java平台般三版本:Java ME(微型版用於某些手機)、Java SE(標准版用於台式電腦)、Java EE(企業版用於伺服器端應用)談Java我通指Java SE版本包含虛擬機編譯器
首先Java代碼編譯稱位元組碼間格式位元組碼目標電腦運行虛擬機快速解析目標電腦硬體操作系統所需要本機格式
除發者提供編寫處運行優勢Java能通垃圾收器(GC)實現自內存管理發者免手代碼釋放用象內存雖功能非用且降低代碼引入內存問題風險增加運行銷需要停執行垃圾收進程
本文比較Java SE用於Android發Java間差異首先我介紹發者習慣Java
SE語言結構及何Android運行其我介紹何優化AndroidJava代碼何優化內存配及何恰處理線程
比較AndroidDalvik JavaJava SE
雖遠Android現前發者能用Java編程語言移設備編寫應用程序Java功能極限版本稱Java
ME(微型版)同移設備需編寫同代碼寫應用程序能支持Java
ME任何手機運行幾乎能外由於存線商店應用發布程極其復雜
Android問世發者提供構建智能手機強應用機發者需用Java編程語言及熟知標准Java
API編寫代碼盡管Android發者仍使用Java SE編譯器編譯應用程序發現James
Gosling發JavaAndroid設備Java存許同處
Android設備運行VM(虛擬機)稱Dalvik初由谷歌Dan
Bornstein發適用於CPU內存受限移設備Java SEDalvik Java存些差異主要體現虛擬機Java
SE使用棧機設計Dalvik設計基於寄存器機器Android SDKdx工具Java
SE棧機器位元組碼轉換基於寄存器Dalvik機器位元組碼該轉換步驟由IDE自完
基於棧虛擬機基於寄存器虛擬機定義及差異列入我討論范圍由於歷史原Android使用基於寄存器虛擬機雖基於寄存器虛擬機比基於棧虛擬機快32%限於執行解釋位元組碼虛擬機(說解釋型虛擬機)Android
2.2版本(稱Froyo)前Dalvik虛擬機都純解釋型Froyo版本引入JIT編譯器(即編譯)Java
SE早優勢
JIT編譯稱態翻譯執行前位元組碼翻譯本機代碼(圖1所示)主要兩處首先消除些純解釋型虛擬機銷;其能本機代碼執行優化通靜態編譯代碼做例JIT編譯器運行CPU選擇合適優化根據應用程序輸入析代碼何運行便進行步優化
圖1Android JavaJava SE翻譯步驟
雖AndroidDalvik JIT編譯器發展前景要達Java SEJIT編譯器般穩定、熟度尚需段間Dalvik JIT現Android提供巨性能優勢且斷改善
JAVA
SE虛擬機Dalvik虛擬機另區別者進行優化運行同機器實例機啟叫做zygote進程該進程創建第Dalvik實例由實例創建所其實例應用程序啟zygote進程收創建新虛擬機實例請求並給該應用程序創建新進程(圖2所示)發者已習慣於Java
SE發設計能看起切實際優勢避免由應用程序運行失敗導致Dalvik虛擬機崩潰繼引發應用程序崩潰
圖2Android啟新Dalvik虛擬機實例
AndroidJava
SE除運行虛擬機同外實現API式Android屬於javajavax包API都自Apache
Harmony(源項目旨重新實現Java SE軟體棧該項目201111月再維護)發面些APIJava
SE包類似存些差別例谷歌HttpUrlConnection類進行Java SE版本所沒重升級
外Android平台移除Java
SE關API例Swing/AWT包完全移除Android使用同UI框架其移除APIRMI、CORBA、ImageIOJMX或者替換特定Android版本(android包空間內)或者些實際原根本存
優化AndroidJava代碼
經改進Java
SE具備些簡化編寫復雜代碼結構新特性其些特性讓整流程變更簡單發者需要解何及何確使用另外由於Java
SE用於伺服器端發(使用Java企業版API)發員專門伺服器端Java代碼進行優化註解Java虛擬機腳本語言支持伺服器端發進行優化例證雖些工具構建端發強發Android客戶端代碼些特性作用甚至起反作用Java發者已經習慣於限量RAMCPUAndroid發需要密切關注性能內存配簡單說發者需要使用稍微同待Android端發
隨著Android首發布情況所改變曾經些Android盡量用Java規范重新推薦主要Android目前JIT編譯器解決些規范導致性能問題
本文討論編寫Android應用程序需要解Java代碼我深究Java編程語言細節重點關注Android發重要東西發者仍需解數適用於Java SE規則建議同適用於AndroidDalvik虛擬機
Android類型安全枚舉
Java SE 5.0新增許便發者新特性其值期待引入類型安全枚舉枚舉代碼用表示屬於某組幾選擇早期版本Java用整型量解決問題雖技術行容易錯請看面代碼:
public class Machine {
public static final int STOPPED = 10;
public static final int INITIALIZING = 20;
public static final int STARTING = 30;
public static final int RUNNING = 40;
public static final int STOPPING = 50;
public static final int CRASHED = 60;
private int mState;
public Machine() {
mState = STOPPED;
}
public int getState() {
return mState;
}
public void setState(int state) {
mState = state;
}
}
問題雖些量期望沒機制保證setState()接收同值要設置添加檢查旦非預期值發者需要處理錯誤發者所需要編譯檢查非賦值類型安全枚舉解決問題所示:
public class Machine {
public enum State {
STOPPED, INITIALIZING, STARTING, RUNNING, STOPPING, CRASHED
}
private State mState;
public Machine() {
mState = State.STOPPED;
}
public State getState() {
return mState;
}
public void setState(State state) {
mState = state;
}
}
注意聲明同類型安全值新加內部枚舉類編譯解決非賦值問題所代碼更容易錯
Dalvik虛擬機沒JIT編譯器優化代碼建議Android平台使用枚舉類型使用整型量相比種設計帶內存性能損失更些版本Android
API存整型量原今更強JIT編譯器及斷改進Dalvik虛擬機發者必再擔問題放膽使用類型安全枚舉即
仍存些情況使用整型量更選擇像intJava基本類型增加GC銷外Android SDK許已API仍依賴基本類型比Handler類——種情況沒太選擇
Android增強版for循環
Java SE 5.0引入增強版for循環提供通用縮寫表達式遍歷集合數組首先比較五種:
void loopOne(String[] names) {
int size = names.length;
for (int i = 0; i < size; i++) {
printName(names[i]);
}
}
void loopTwo(String[] names) {
for (String name : names) {
printName(name);
}
}
void loopThree(Collection names) {
for (String name : names) {
printName(name);
}
}
void loopFour(Collection names) {
Iterator iterator = names.iterator();
while (iterator.hasNext()) {
printName(iterator.next());
}
}
// 要ArrayList使用增強版for循環
void loopFive(ArrayList names) {
int size = names.size();
for (int i = 0; i < size; i++) {
printName(names.get(i));
}
}
面顯示四種同遍歷集合數組式前面兩種著相同性能所讀取元素放數組使用增強版for循環Collection象說增強版for循環使用迭代器遍歷元素著相同性能ArrayList象應避免使用增強版for循環
僅需要遍歷元素且需要元素位置定要使用數組或者ArrayList所其Collection類些情況更慢
般情況讀取元素幾乎變數據集性能要求高建議使用規數組數組固定添加數據影響性能所編寫代碼要考慮所素
隊列、同步鎖
通情況應用程序線程產數據另線程使用見例線程獲取網路數據另線程(操作UI主線程)些數據展現給用戶種模式稱產者/消費者模式面向象編程課程發者用算實現該模式能要花幾面介紹些簡化產者/消費者模式實現現類
1. 更智能隊列
雖已現類並能用更少代碼實現該功能許Java發者仍選擇使用LinkedList及同步塊實現隊列功能發者java.util.concurrent包找同步相關類外本包包含信號量、鎖及單變數進行原操作類考慮面使用標准LinkedList實現線程安全隊列代碼
public class ThreadSafeQueue {
private LinkedList mList = new LinkedList();
private final Object mLock = new Object();
public void offer(String value) {
synchronized (mLock) {
mList.offer(value);
mLock.notifyAll();
}
}
public synchronized String poll() {
synchronized (mLock) {
while (mList.isEmpty()) {
try {
mLock.wait();
} catch (InterruptedException e) {
//簡潔起見忽略異處理
}
}
return mList.poll();
}
}
}
雖段代碼確並能考試滿實現測試段代碼浪費間實際所前面代碼用面行代替
LinkedBlockingQueue blockingQueue =
new LinkedBlockingQueue();
面行代碼能像前面例提供相同類型阻塞隊列甚至能提供額外線程安全操作java.util.concurrent包含許選隊列及並發映射類所般情況建議使用像前示例使用更代碼
2. 更智能鎖
Java提供synchronized關鍵字允許發者創建線程安全代碼塊synchronized關鍵字易於使用容易濫用性能造負面影響需要區讀數據寫數據synchronized關鍵字並效幸java.util.concurrent.locks包工具類種情況提供支持
public class ReadWriteLockDemo {
private final ReentrantReadWriteLock mLock;
private String mName;
private int mAge;
private String mAddress;
public ReadWriteLockDemo() {
mLock = new ReentrantReadWriteLock();
}
public void setPersonData(String name, int age, String address) {
ReentrantReadWriteLock.WriteLock writeLock = mLock.writeLock();
try {
writeLock.lock();
mName = name;
mAge = age;
mAddress = address;
} finally {
writeLock.unlock();
}
}
public String getName() {
ReentrantReadWriteLock.ReadLock readLock = mLock.readLock();
try {
readLock.lock();
return mName;
} finally {
readLock.unlock();
}
}
// 重復代碼再贅述
}
面代碼展示使用ReentrantReadWriteLock允許並發線程數據進行讀訪問並確保同間線程寫入相同數據
代碼使用synchronized關鍵字仍處理鎖問題效論何種情況都要考慮ReentrantReadWriteLock否
③ 求助,開發android客戶端如何搭建伺服器用自己的電腦當伺服器,java,tom...
這個非常簡單。你可以用android http訪問方式訪問你的java客戶端。java客戶端你可以使用action進行連接。這個我已經實現過了。如果你需要的話,我可以發你。又或者你對socket比較熟悉的話,可以使用mina進行socket通信。也是可以的,不過這些都需要時間。我沒有進行嘗試,你可以試著寫寫。至於其他的,參考普通的webproject即可。
哦,忘記說qq了,我qq是361642326.
④ 我的世界手機版怎麼做模組
常見做法如下:
必備裝備和材料:我的世界手機版。
1、首先需要點擊游戲,進入我的世界,如下圖所示。
⑤ 自己如何搭建伺服器。
1、網站伺服器其實就是我們通常說的web主機,對應不同的編程語言,單間網站伺服器的軟體不同,一般情況下,在windows環境下,一般以.asp.net.html為主,在這種情況下,搭建網站伺服器就主要用到微軟系統自帶的iis(互聯網信息服務)就可以了,Linux環境下就是php了,相對應搭建的軟體就是apache+mssql了。
2、java是跨平台的,哪個都可以。對於初學者來說,建議使用asp方面伺服器,一方面是asp程序比較簡單易懂,在修改過程中,還可以藉助Dreamweaver等可視化編程工具,進行可視化編輯,另一方面windows環境下iis安裝極其簡單,在控制面板中——添加刪除程序—物纖—windows組建,下拉找到iis,放入系統盤即可安裝,無需下載任何東西。
3、在我們網站編程實際應用過程中,我們其實還用到一個簡易的iis伺服器,網路一下就能找到「簡易iis伺服器」,這是一些熱心的網友開發出來的網站服務應用程序,同樣可以起到iis的作用,但是支持的范圍有限,對於一些高端的iis服務不支持,但是作為日常測試網站程序已經是足夠了。
4、如果准備搭建的網站伺服器是准備支持php的,推薦安裝「一鍵php集成調試環境」,安裝極其簡單,下載後,下一步就可以,這個集成環境,融合了,php解釋器,mssql伺服器,phpadmin,Apache伺服器,php加速器等。可以說是一個完美的php伺服器環境。
5、下面還需要對網站伺服器就行設置,設置網站的路徑,使其指向你網站程序的存放目錄,設置網站首頁例如:index.asp,index.php等。然後測試一下自己的ip地址是多少,如果你的這台網站伺服器是放置在區域網環境當中的,那還需要你再路由器上設置一下埠映射,否則外網的電腦是訪問不了你這台電腦的,路由器就由於一道牆,他阻隔了你與外界的交流,也就是說保護著你這台電腦。
6、但是你現在想讓外部的電並蔽腦訪問你,就必須讓外部電腦了解你的位置,所以做一個埠映射就可以實現,具體如果做,請查看你所使用的路由器的型號來設置了,切記一定把80埠映射就可以,網站伺服器默認的埠是80埠。
(1)你上網沒有用路由,運營商單獨分給你一個ip地址,那你直接可以用你的ip讓外網的同學來訪問你的網站,我們這里用的8080埠,所以形式為:xxxxxxxxxx:8080.為了讓多的同學了解,我在_嗦一下,怎麼知道自己的ip地址,你不必用在cmd命令輸入ipconfig這種略顯專業的方法去獲取,其實哦重要在網路搜素「ip查詢」,第一個就是。
(2)用了路由器,一個路由器呆了好幾台電腦,比如說跟室友,這就需要你去路由絕螞州管理頁面設置一下,埠映射,讓被人訪問你們的ip地址時,映射到你的電腦,在瀏覽器中輸入192.168.1.1(以你的路由為准),進入路由管理頁面,操作,
轉發規則-----虛擬伺服器-------添加新條目
埠我們沒改,所以填8080,IP地址為你的電腦在區域網中的地址,怎麼樣知道自己的區域網中的地址,很簡單自己網路一下,只要區域網里的電腦不是太多,一般為192.168.1.XXX,我這里為192.168.1.101,然後點擊保存,OK,然後外網就可以用你們IP去訪問你的網站了。
效果圖如下:
這時可以把這個網址發給你的同學,試一下,他能不能訪問你的網站,答案是肯定的!
3、但是又有新問題了,你第二天打開路由,或者再次上網時,運營商會重新分配給你一個新的IP地址,難道你讓你同學訪問時,再次把這個IP地址發給他嗎?顯然這是不合理了。
我們就想有一個動態域名多好。這里給大家介紹一款軟體「花生殼」,下載安裝,然後注冊後,你就會獲得一個免費的二級域名,每次開機自啟後,就會將花生殼服務端中的IP數據更新成你新的IP地址,然後你每次用你固定的域名來訪問時,就會解析到你新的IP地址。
:
雙擊你的域名,看有沒有顯示出「經檢測,您的域名已激活並指向正確」!
OK,到這里,沒有路由的同學,就可以直接用你的域名訪問了!
有路由的同學,還得多操作一步:
再次進入路由管理頁面,操作:
點擊「動態DNS」,這時如果你的上述操作都沒問題的話,服務提供者那一欄已經自動填充成花生殼的網址了,然後輸入用戶名,密碼,點擊登錄,如果顯示為「連接成功」,那點擊「保存」。到這里,終於大功告成,看一下最終效果圖:
可以看到,我用我的域名成功的訪問到了我的網站。
PS:有時顯示「驗證成功」時也是個假象,一點擊「保存」時,又顯示為「驗證失敗」,再點擊「登錄」,多點擊幾次「保存」,直到它一直顯示為「驗證成功」即可,反正就是多試幾次。