導航:首頁 > 編程語言 > linuxjavajni

linuxjavajni

發布時間:2024-03-06 17:10:48

安卓系統是用java開發的嗎

android是基於linux的開源操作系統。 linux是使用標准C語言開發的操作系統。 android底層驅動以及操作系統內核使用C語言以及匯編開發。 android操作系統本身是使用Java開發,並使用JNI調用本地的C語言庫,型鉛旁實現操作系統底層調度。 android應用是使用Java開發;同時也可以使用C/C++ native開發,但是多數時激明候不用用到C。所以基本上就是Java為標准開發語言。 android使用了修改過的JVM(Java虛擬機)叫做dalvik虛擬機,其本質還是Java虛擬機。 所以對應每一個APP都卜橡會創建個dalvik虛擬機,也就是一個linux進程。 說復雜了,其實就是基於linux下的修改版Java虛擬機,運行java程序。

㈡ 如何在linux下創建一個簡單的JNI程序HelloWorld

JNI全名是Java Native Interface,通過JNI技術可以實現Java和其他編程語言的互相調用。這里我們使用的是Java和C的互相調用,Java提供本地介面,C實現該本地介面。

我使用的是RHEL 5,主要是為了測試一下在Linux平台下,了解JNI技術是如何實現的。通過一個HelloWorld實例,具體過程在下面講解。

首先,實現的是Java本地介面Hello.java,代碼如下所示:

classHelloWorld{

publicnativevoidsayHello();

static{
System.loadLibrary("HelloWorld");
}

publicstaticvoidmain(String[]args){
(newHelloWorld()).sayHello();
}
}

其中,方法聲明為native,其實HelloWorld類就相當於一個介面,是為其他編程語言聲明的介面。System.loadLibrary("HelloWorld");語句是一個static塊,也就是在該HelloWorld類載入的時候進行執行。其中,該語句實現了載入本地的動態連接庫(DLL),在Linux平台下,動態連接庫文件是以.so作為擴展名的,也就是標准對象(Standard Object)。

對該本地介面類進行編譯

[root@localhost jni]# javac HelloWorld.java

接著,通過編譯的HelloWorld.class文件,生成C語言的頭文件,執行命令

[root@localhost jni]# javah -jni HelloWorld

可以看到,在當前目錄下生成一個HelloWorld.h文件,該文件就是C的介面文件,為使用C實現Java介面中定義的方法,可以發現在HelloWorld.h中有一個方法聲明:

#ifndef__HelloWorld__
#define__HelloWorld__

#include<jni.h>

#ifdef__cplusplus
extern"C"
{
#endif

JNIEXPORTvoidJNICALLJava_HelloWorld_sayHello(JNIEnv*env,jobject);

#ifdef__cplusplus
}
#endif

#endif/*__HelloWorld__*/

然後,用C實現該方法,在HelloWorld.c文件中,代碼如下:

#include<jni.h>
#include"HelloWorld.h"
#include<stdio.h>

JNIEXPORTvoidJNICALLJava_HelloWorld_sayHello(JNIEnv*env,jobjectobj){
printf("Hello,theWorld!!!");
}

這里,方法簽名為Java_HelloWorld_sayHello (JNIEnv *env, jobject obj),添加了形參obj,否則無法通過編譯。

接下來,生成動態連接庫libHelloWorld.so,執行命令:

[root@localhost jni]# gcc -fPIC -shared -o libHelloWorld.so HelloWorld.c

可以在當前目錄下看到libHelloWorld.so,動態連接庫文件名稱以lib開頭。將該文件拷貝到usr/lib目錄下面,就可以測試了。

現在執行如下命令進行測試:

[root@localhost jni]# java HelloWorld

輸出如下:

Hello,the World!!!

這只是一個非常簡單的例子,主要是了解JNI在Linux下該如何用。在實際應用中,可能會非常復雜,並且要記住,一旦使用了JNI技術,系統的可移植性被破壞了。有些應用中,正是基於這種特性實現,比如限制軟體的傳播使用,保護開發商權益,等等。

㈢ java使用JNI調用VC6.0編寫的動態鏈接庫dll,如何移植到linux環境下使用

你想要的應該基本不可能實現了,gpsun.lib是在window下生成的靜態庫,是不能在linux上直接調用的,襲岩如果你清楚gpsin的實現,可以在linux下編一個自己的靜態庫,是以.a結尾的拍亂御,然後在linux上編譯.so文陪局件時將這個.a文件鏈接進去,最後就可以用jni去調用了

㈣ java開發工程師必須要學的技術有哪些

學習內容:

初級部分
Java 程序設計基礎,包括 J2sdk基礎、Java面向對象基礎、Java API使用、數據結構及演算法基礎、Java AWT圖形界面程序開發;
J2SE平台Java程序設計,包括Swing圖形程序設計, Socket網路應用程序設計,對象序列化,Java 常用數據結構,Applet,流和文件,多線程程序設計;
Java桌面系統項目開發,4~5人組成一個項目組,項目大小為(15人*工作日);
Linux的基本操作,Linux下的Java程序開發,Linux系統的簡單管理;
Oracle資料庫,包括SQL/PLSQL;資料庫和資料庫設計;簡單掌握ORACLE9i 資料庫的管理;[2]
中級部分
Java Web應用編程,包括 Java Oracle 編程,即JDBC;JavaWeb編程,包括JSP、Servlet,JavaBean;Java應用編程,包括Weblogic、Websphere、Tomcat;以及利用Jbuilder開發Java程序;
MVC與Struts,學習業界通用的MVC設計模式和Struts架構;
Java B/S商務項目開發,4~5人一個項目組,項目大小為(25人*工作日左右)
高級部分
J2ME程序設計,包括J2EE程序、J2ME;Java高級程序設計(J2EE),包括J2EE體系結構和J2EE技術、EJB;Weblogic使用、 JBuilder開發;
Java和XML,包括Java Web Service,JavaXML, 業界主流XML解析器程序設計;
軟體企業規范和軟體工程,包括UML系統建模型和設計(Rational Rose 200x)軟體工程和業界開發規范;CVS版本控制、Java Code書寫規范;
J2EE商務應用系統項目開發,4~5人一個項目組,項目大小為(25人*工作日左右)。
………………………………………………………………………………………………

看你問的問題,應該是對java很感興趣,其實你可以自學java。關於如何學習java,我剛才看到一篇很不錯的文章,是一個農民工介紹自己如何自學java,並找到Java的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
我是一名地地道道的農民工,生活在經濟落後的農村,有一個哥哥和一個弟弟,父母都是地道的農民,日出而作,日落而息,我從小到大學習一直很好,從小學到高一都,成績在全級一直名列前茅,這樣我也順利了考上省的重點高中,然而,每個學期開學是家裡最為難的時候,每次交學費都讓父母發愁許久,家裡為了給我籌錢讀書,都借了不少錢,才讓我讀上高中。我知道我讀到高中家裡已經欠了好多債,為了減輕家裡的負擔,我選擇了退學。
2009年我高一退學,為了給家裡還債,干過建築工地的小工,搞過塑料製品加工,送水工等等。很工資都很低,一個月也就1000多,加上加班費一個月能拿2000多一點,我每個月都向家裡寄回800-1000元,到了2011年末,一次偶然的機會我接觸了Java,聽說Java的前景挺不錯,工資相對於我一個農民工來說簡直是天文數字,於是我在新華書店買了幾本Java的書,盡管白天辛苦工作,晚上回來還是堅持看書,但有於基礎太差很多都很不明白,但還是堅持看,一有看1-2個小時Java的書,看著看著許多基礎都慢慢的學會了,但那些比較難的還是看不懂,後來還買了有些關於框架的書,還是看不懂,這樣斷斷續續的持續了半年多,覺得自己Java的基礎都差不多懂了,但框架還是看不懂,還有最缺的項目經驗,看了很多招聘Java程序員的簡介都要項目經驗,相對我一個農民工來連框架都弄不明白,想找一份Java工作對我來說簡直是奢侈。我只想學Java,並不敢想以後能從事Java的工作。
有一次,在網路上看到一篇讓我很鼓舞的文章,是一個Java高手介紹在沒有基礎的朋友怎麼自學入門Java,文章寫的很好,包含了如何學習,該怎麼學習,他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,不少是我們也看不懂,這點我真的很認同,我自己看書都看了很久才學會基礎。曾經有想過參加培訓,但是上萬元的培訓費讓我望而卻步,我工資這么低,每個月還有向家裡匯錢,加上城市消費比較高,雖然每個月只有幾百剩下,但是相對於上萬萬學費和四個月的吃住費用逼我連想不敢想。 於是我決定看視頻,我就去搜索Java的視頻,雖然我零星的找到一些Java的視頻,但是都不系統。最重要連項目都沒有。後來我找到一份很好的視頻,是IT學習聯盟這個網站一套視頻叫<<零基礎Java就業班>>的教程還不錯,很完整。還贈送11個頂級企業項目。價格很合理,於是我買下來。
於是開始了我的自學Java的路,收到光碟後,我就開始學習,剛開始學習還不錯,是從零基礎教起,老師幽默風趣而又輕松的課堂教課,使我發現原來學習JAVA並不是一件很難的事情。因為我本來基礎還不錯,前面的基礎看一篇我就過去了,到了框架,我覺不又不是很難,可能老師太牛了,他能把復雜的問題講的比較通俗易懂,有些難點的地方我還是連續看了五六次,把他弄懂。每天下午6點下班後,吃了飯,馬上跑回家。看視頻,買了幾本筆記本。當時,為了編程還花幾百元了台二手的台式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點都記下來,還一邊跟著老師敲代碼,為了能盡早學會Java。每天都堅持學5-6個小時。經常學到晚上一點多才睡覺。星期六,日不用上班,每天7點多起床,學到晚上11,12點。那段時間特別辛苦,特別累。在學習Java的三個多月里,除了吃飯睡覺工作,剩餘的時間都在學習,因為我知道自己的計算機基礎不是很好,也沒有學過什麼計算機,只是學了些Java基礎,相對於那些科班的人來說我要比他們付出更多的努力。我只能咬緊牙關,堅持下去,我不能放棄,我要完成我的夢想,我要讓我的家人過上好日子。終於三個多月後我把Java教程里的內容和項目都學完了,在學項目的過程中我發現項目特別重要,他能把你學過的知識全部聯系起來,能更好的理解你所學的知識。還有學習過程中,動手很重要,要經常跟著老師動手敲,動手吧,跟著做,一行一行的跟著敲,再試著加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽大的多。 如果遇到暫時對於一些思路不能理解的,動手寫,先寫代碼,慢慢你就會懂了。這套視頻還贈送了11個頂級企業項目,對於我沒有任何經驗的人來說,這個太重要了,還有在學習項目是提升能力最快的方法。項目能把所有的知識點全都連到一起了,不再是分散的,而是形成一個整體了。那種感覺是僅僅深入鑽研知識點而不寫真實項目的人所不能體會的。一個項目就是一根繩子可以把大片的知識串到一起。 就這樣,我用了兩個月也把項目給學完了。其實學完教程差不錯就達到就業水平,但是我可能覺得自己學歷低還是把那11個頂級企業項目才去找工作。
接著我就到51job瘋狂的投簡歷,因為我的學歷問題,初中畢業,說真的,大公司沒有人會要我。所以我頭的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比價嚴格,需要有一年的項目經驗,所以我沒有被選中。 後來陸續面試了幾加公司,終於功夫不負有心人,我終於面試上了一家民營的企業。公司規模比較小,我的職務是Java程序員。我想我比較幸運,經理看中我的努力,就決定呂勇我,開的工資是3500一個月,雖然我知道在北京3500隻能過溫飽的生化,但是我想我足夠了,比起以前的工資好了些,以後可以多寄些錢回家。我想只要我繼續努力。我工資一定會翻倍的。 把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有自卑,我們不比別人笨,只有我們肯努力,我們一樣會成功。

㈤ JAVA中用JNI調用了在WIN32下編譯的DLL,如果在LINUX下執行這個JAVA程序,是否還可以繼續調用的DLL。

直接是不行的! linux裡面沒有dll。
不過看你的需求應該是java調用了其他程序別寫的功能,在linux裡面肯定可以!Linux也有動態鏈接庫的概念,不過叫Share Object ,你編譯一個.so的文件,然後還是使用JNI調用。
參考:
編譯so:http://www.cnblogs.com/ardar/articles/357321.html
java調用:http://..com/question/488673981.html

㈥ linux 中怎麼設置java

三種配置環境變數的方法

1. 修改/etc/profile文件
如果你的計算機僅僅作為開發使用時推薦使用這種方法,因為所有用戶的shell都有權使用這些環境變數,可能會給系統帶來安全性問題。
·用文本編輯器打開/etc/profile
·在profile文件末尾加入:

exportJAVA_HOME=/usr/share/jdk1.6.0_14
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


·重新登錄或執行 sudo source /etc/profile
·註解
a. 假設你要將 /usr/share/jdk1.6.0_14改為你的jdk安裝目錄
b. linux下用冒號「:」來分隔路徑
c. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變數的值
在設置環境變數時特別要注意不能把原來的值給覆蓋掉了,這是一種
常見的錯誤。
d. CLASSPATH中當前目錄「.」不能丟,把當前目錄丟掉也是常見的錯誤。
e. export是把這三個變數導出為全局變數。
f. 大小寫必須嚴格區分。

2. 修改.bash_profile文件

這種方法更為安全,它可以把使用這些環境變數的許可權控制到用戶級別,如果你需要給某個用戶許可權使用這些環境變數,你只需要修改其個人用戶主目錄下的.bash_profile文件就可以了。
·用文本編輯器打開用戶目錄下的.bash_profile文件
·在.bash_profile文件末尾加入:

exportJAVA_HOME=/usr/share/jdk1.6.0_14
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

·重新登錄或執行source ~/.bash_profile


3. 直接在shell下設置變數
不贊成使用這種方法,因為換個shell,你的設置就無效了,因此這種方法僅僅是臨時使用,以後要使用的時候又要重新設置,比較麻煩。
只需在shell終端執行下列命令:

exportJAVA_HOME=/usr/share/jdk1.6.0_14
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


閱讀全文

與linuxjavajni相關的資料

熱點內容
單片機的系統組成 瀏覽:610
中國天河二號演算法 瀏覽:647
程序員是怎麼瘋的 瀏覽:598
程序員的貓有幾條命 瀏覽:832
安卓如何把圖片傳到電腦上 瀏覽:895
到去哪兒旅行app怎麼買票 瀏覽:444
工商銀行app房貸還款在哪裡看 瀏覽:761
最新民生通訊app從哪裡下載 瀏覽:378
如何在發簡訊時給自己手機號加密 瀏覽:773
擴展單片機ram定址方式是什麼 瀏覽:318
phpide是什麼 瀏覽:752
單片機相關軟體 瀏覽:818
eclipse如何編譯c11 瀏覽:286
加密游戲app 瀏覽:73
vs2010編譯嵌套太深 瀏覽:982
程序員面試注意事項 瀏覽:741
scratch編譯為h5 瀏覽:209
威聯通套件編譯 瀏覽:233
清刻pdf 瀏覽:984
可編程延時發生器 瀏覽:95