真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java程序員rpc代碼,java中rpc

java protobuf 定義rpc服務(wù)怎么調(diào)用

1.,選擇其中的win版本下載,我選擇的是protoc-2.4.1-win32.zip

創(chuàng)新互聯(lián)公司主打移動網(wǎng)站、網(wǎng)站制作、做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名申請、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

2.下載一個protobuf-java-2.4.1.jar文件(注意,要與你剛才下的proto.exe版本相同)

然后就開始開發(fā)了。

步驟:

1.用記事本編寫一個.proto文件:

}如:編寫的是test.proto

package protobuf;

option java_package = "com.sq.protobuf";

option java_outer_classname = "FirstProtobuf";

message testBuf {

required int32 ID = 1;

required string Url = 2;

}

將其放在與剛解壓的protoc.exe同級目錄中。

2.在cmd中,到protoc-2.4.1-win32文件夾下,

執(zhí)行

E:\protoc-2.4.1-win32 protoc.exe --java_out=./ test.proto

則可以找到的一個生成的FirstProtobuf.java文件。

3.在MyEclipse中新建一個java project,建立包c(diǎn)om.sq.protobuf,然后將剛才生成的FirstProtobuf.java文件放在其下面。

此時會報(bào)錯,因?yàn)闆]有引入jar包,在package視圖下,將protobuf-java-2.4.1.jar引入,即可解決問題。

誰能用通俗的語言解釋一下什么是RPC框架

早期單機(jī)時代,一臺電腦上運(yùn)行多個進(jìn)程,大家各干各的,老死不相往來。假如A進(jìn)程需要一個畫圖的功能,B進(jìn)程也需要一個畫圖的功能,程序員就必須為兩個進(jìn)程都寫一個畫圖的功能。這不是整人么?于是就出現(xiàn)了IPC(Inter-process communication,單機(jī)中運(yùn)行的進(jìn)程之間的相互通信)。OK,現(xiàn)在A既然有了畫圖的功能,B就調(diào)用A進(jìn)程上的畫圖功能好了,程序員終于可以偷下懶了。

到了網(wǎng)絡(luò)時代,大家的電腦都連起來了。以前程序只能調(diào)用自己電腦上的進(jìn)程,能不能調(diào)用其他機(jī)器上的進(jìn)程呢?于是就程序員就把IPC擴(kuò)展到網(wǎng)絡(luò)上,這就是RPC(遠(yuǎn)程過程調(diào)用)了?,F(xiàn)在不僅單機(jī)上的進(jìn)程可以相互通信,多機(jī)器中的進(jìn)程也可以相互通信了。

要知道實(shí)現(xiàn)RPC很麻煩呀,什么多線程、什么Socket、什么I/O,都是讓咱們普通程序員很頭疼的事情。于是就有牛人開發(fā)出RPC框架(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。

OK,現(xiàn)在可以定義RPC框架的概念了。簡單點(diǎn)講,RPC框架就是可以讓程序員來調(diào)用遠(yuǎn)程進(jìn)程上的代碼一套工具。有了RPC框架,咱程序員就輕松很多了,終于可以逃離多線程、Socket、I/O的苦海了。

至于最近Java中流行的Netty,沒玩過。但是大致了解過,Netty、Mina是游戲行業(yè)做服務(wù)器開發(fā)的Java程序員用的比較多的PRC框架(我們學(xué)生主要是Java方向的,有不少人畢業(yè)后從事游戲開發(fā))。據(jù)說互聯(lián)網(wǎng)公司用的也比較多。這兩行業(yè)都有高并發(fā)量的、長連接、分布式、異步通訊、大數(shù)據(jù)量等特點(diǎn)。Netty這種RPC框架封裝和優(yōu)化了Java NIO和異步網(wǎng)絡(luò)編程的一些繁瑣的細(xì)節(jié),一方面可以讓開發(fā)者專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),一方面只需要調(diào)用Netty封裝的API就可以很快編寫出高性能的服務(wù)器。

如何實(shí)現(xiàn)一個簡單的RPC框

0,服務(wù)接口定義---Echo.java

/*

* 定義了服務(wù)器提供的服務(wù)類型 */public interface Echo { ? ?public String echo(String string);

}

一,客戶端代碼分析--實(shí)現(xiàn)類:MainClient.java

客戶端實(shí)現(xiàn)包括:獲得一個代理對象,并使用該代理對象調(diào)用服務(wù)器的服務(wù)。獲取代理對象時,需要指定被代理的類(相當(dāng)于服務(wù)器端提供的服務(wù)名),Server IP,Port,這樣客戶端就能找到服務(wù)端的服務(wù)了。

延伸:分布式環(huán)境下,Client如何打到Server的服務(wù)?---因?yàn)椋诜?wù)器中運(yùn)行的某些服務(wù)不像標(biāo)準(zhǔn)服務(wù)有著固定的端口,如HTTP的80端口。

一種解決方法是:在運(yùn)行服務(wù)的每臺機(jī)器上都運(yùn)行一個特殊的守護(hù)進(jìn)程,該守護(hù)進(jìn)程負(fù)責(zé)跟蹤位于該機(jī)器中每一項(xiàng)服務(wù)所使用的端口;此外,守護(hù)進(jìn)程還監(jiān)聽一個特定的已經(jīng)端口,Client通過這個端口與守護(hù)進(jìn)程聯(lián)系,請求得到指定服務(wù)的端口。

復(fù)雜的RPC實(shí)現(xiàn)框架中,比如可以把服務(wù)注冊到ZooKeeper中,Client也從ZooKeeper中查詢服務(wù)。參考:一個更復(fù)雜的RPC框架實(shí)現(xiàn)

Echo echo = RPC.getProxy(Echo.class, "127.0.0.1", 20382);

System.out.println(echo.echo("hello,hello"));//使用代理對象調(diào)用服務(wù)器的服務(wù).并將結(jié)果輸出

二,服務(wù)器端分析--實(shí)現(xiàn)類:MainServer.java

服務(wù)器實(shí)現(xiàn)包括:創(chuàng)建一個服務(wù)器對象,將它能提供的服務(wù)注冊,并啟動進(jìn)程監(jiān)聽客戶端的連接

Server server = new RPC.RPCServer(); ? ? ? ?/*

* server 啟動后,需要注冊server端能夠提供的服務(wù),這樣client使用 服務(wù)的名字、

* 服務(wù)器的IP、以及服務(wù)所運(yùn)行的端口 來調(diào)用 server 的服務(wù) ? ? ? ? */

server.register(Echo.class, RemoteEcho.class);//注冊服務(wù)的名字

server.register(AnOtherEchoService.class, AnOtherEchoServiceImpl.class);

server.start();//啟動server

三,服務(wù)器監(jiān)聽Client連接分析----實(shí)現(xiàn)類:Listener.java

當(dāng)server.start()后,它要創(chuàng)建一個Listener對象,這是一個線程類,該線程用來監(jiān)聽Client連接。

public void start() {

System.out.println("啟動服務(wù)器");

/*

* server 啟動時,需要Listener監(jiān)聽是否有client的請求連接

* listener 是一個線程,由它來監(jiān)聽連接 ? ? ? ? ? ? */

listener = new Listener(this); ? ? ? ? ? ?this.isRuning = true;

listener.start();//listener 是一個線程類,start()后會執(zhí)行線程的run方法

}

其實(shí),監(jiān)聽連接就是JAVA ServerSocket類和Socket類提供的相關(guān)功能而已。

/*

* accept()是一個阻塞方法,server_socket 一直等待client 是否有連接到來 */

Socket client = server_socket.accept();//建立一條TCP連接

四,動態(tài)代理對象 生成---RPC.java

客戶端只需要編寫生成代理對象,用代理對象去調(diào)用遠(yuǎn)程服務(wù)的代碼即可。但是,底層的功能如:建立連接,序列化(本例中也沒有考慮),跨語言調(diào)用(未考慮)...是由RPC框架完成的。

當(dāng)MainClient 語句:RPC.getProxy(Echo.class, "127.0.0.1", 20382);執(zhí)行時,會由

/*

* @param Class[]{} 該參數(shù)聲明了動態(tài)生成的代理對象實(shí)現(xiàn)了的接口,即 clazz 所代表的接口類型 .

* 這表明了生成的代理對象它是一個它所實(shí)現(xiàn)了的接口類型的對象

* 從而就可以用它來調(diào)用它所實(shí)現(xiàn)的接口中定義的方法

*

* @param handler 生成代理實(shí)例對象時需要傳遞一個handler參數(shù)

* 這樣當(dāng)該 代理實(shí)例對象調(diào)用接口中定義的方法時,將會委托給InvocationHandler 接口中聲明的invoke方法

* 此時,InvocationHandler 的invoke 方法將會被自動調(diào)用 ? ? ? ? */

T t = (T) Proxy.newProxyInstance(RPC.class.getClassLoader(), new Class[] {clazz}, handler); ? ? ? ?return t;

返回該代理對象,然后就會委托第三個參數(shù) handler 自動執(zhí)行 invoke(),invoke將客戶端調(diào)用的所有相關(guān)信息封裝到Invocation 對象中(后面分析)。然后執(zhí)行第16行代碼發(fā)起連接。

1 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 2 ? ? ? ? ? ? ? ? Invocation invo = new Invocation(); 3 ?? ? ? ? ? ? ? ?invo.setInterfaces(clazz); 4 ? ? ? ? ? ? ? ? ?5 ? ? ? ? ? ? ? ? //利用反射機(jī)制將java.lang.reflect.Method 所代表的方法名,參數(shù) 封裝到 Invocation invo對象中 6 ? ? ? ? ? ? ? ? invo.setMethod(new org.jy.rpc.protocal.Method(method.getName(),method.getParameterTypes())); 7 ?? ? ? ? ? ? ? ?invo.setParams(args); 8 ? ? ? ? ? ? ? ? ?9 ? ? ? ? ? ? ? ? /*10 ?? ? ? ? ? ? ? ? * 當(dāng)把需要調(diào)用的遠(yuǎn)程server端的方法名和參數(shù)封裝到invo之后,Client 對象 就可以把 invo 作為參數(shù) 傳遞給服務(wù)器了.11 ?? ? ? ? ? ? ? ? * 為什么需要這樣做呢?InvocationHandler 的invoke方法是自動執(zhí)行的,在該方法里面,它根據(jù)生成的代理對象 proxy (第一個參數(shù))12 ?? ? ? ? ? ? ? ? * 所實(shí)現(xiàn)的接口(由 Proxy.newProxyInstance()的第二個參數(shù)指定) 就可以知道這個接口中定義了哪些方法13 ?? ? ? ? ? ? ? ? * InvocationHandler 的 invoke 方法的第二個參數(shù)Method method 就可以解析出接口中的方法名和參數(shù)了14 ?? ? ? ? ? ? ? ? * 把它們封裝進(jìn)Invocation invo對象中,再將 invo 作為 client.invoke(invo)的參數(shù) 發(fā)送到服務(wù)器方15 ? ? ? ? ? ? ? ? ?*/16 ? ? ? ? ? ? ? ? client.invoke(invo);//invoke 先調(diào)用init發(fā)起一個Socket連接,再將invo 發(fā)送至輸出流中17 ? ? ? ? ? ? ? ? return invo.getResult();18 ? ? ? ? ? ? }

五,“客戶端存根”--Client.java

最重要的是它的 invoke方法(注意與InvocationHandler的invoke()區(qū)分)。它負(fù)責(zé)建立連接,打開輸入、輸出流,向服務(wù)器發(fā)送字節(jié)數(shù)據(jù)。

1 ? ? public void invoke(Invocation invo) throws UnknownHostException, IOException, ClassNotFoundException {2 ?? ? ? ?init();3 ? ? ? ? System.out.println("寫入數(shù)據(jù)");4 ? ? ? ? oos.writeObject(invo);//將Client 需要調(diào)用的Server的 接口、方法、參數(shù) 封裝起來 發(fā)給服務(wù)器5 ?? ? ? ?oos.flush();6 ? ? ? ? ois = new ObjectInputStream(socket.getInputStream());//用來接收從 server 返回 回來的執(zhí)行結(jié)果 的輸入流7 ? ? ? ? Invocation result = (Invocation) ois.readObject();8 ? ? ? ? invo.setResult(result.getResult());//將結(jié)果 保存到 Invocation result對象中9 ? ? }

六,“服務(wù)器存根“---實(shí)現(xiàn)類:RPCServer.java

上面提到,服務(wù)器通過Listener監(jiān)聽客戶端連接,當(dāng)建立客戶端連接后,Socket client = server_socket.accept(); 不再阻塞,服務(wù)器調(diào)用它的call()方法完成客戶端請求的功能。也即,客戶端請求的結(jié)果實(shí)際上是在服務(wù)器執(zhí)行生成的。返回的結(jié)果是在Client.java 的 invoke() 方法里被讀取出來 。call()再一次用到了JAVA反射(第11行) 參考:JAVA動態(tài)代理

1 public void call(Invocation invo) { 2 ?? ? ? ? ? ?System.out.println(invo.getClass().getName()); 3 ? ? ? ? ? ? Object obj = serviceEngine.get(invo.getInterfaces().getName()); 4 ? ? ? ? ? ? if(obj!=null) { 5 ? ? ? ? ? ? ? ? try { 6 ? ? ? ? ? ? ? ? ? ? Method m = obj.getClass().getMethod(invo.getMethod().getMethodName(), invo.getMethod().getParams()); 7 ? ? ? ? ? ? ? ? ? ? /* 8 ?? ? ? ? ? ? ? ? ? ? * 利用JAVA反射機(jī)制來執(zhí)行java.lang.reflect.Method 所代表的方法 9 ?? ? ? ? ? ? ? ? ? ? * @param result : 執(zhí)行實(shí)際方法后 得到的 服務(wù)的執(zhí)行結(jié)果10 ? ? ? ? ? ? ? ? ? ? ?*/11 ? ? ? ? ? ? ? ? ? ? Object result = m.invoke(obj, invo.getParams());12 ? ? ? ? ? ? ? ? ? ? invo.setResult(result);//將服務(wù)的執(zhí)行結(jié)果封裝到invo對象中。在后面的代碼中,將該對象寫入到輸出流中13 ? ? ? ? ? ? ? ? } catch (Throwable th) {14 ?? ? ? ? ? ? ? ? ? ?th.printStackTrace();15 ?? ? ? ? ? ? ? ?}16 ? ? ? ? ? ? } else {17 ? ? ? ? ? ? ? ? throw new IllegalArgumentException("has no these class");18 ?? ? ? ? ? ?}19 ? ? ? ? }

七,”RPC 編碼、解碼,協(xié)議的定義“---Invocation.java?? Method.java

其實(shí),這里并不是那種實(shí)用的開源RPC框架如Thrift中所指的編碼、IDL……上面兩個類只是RPC實(shí)現(xiàn)過程中輔助完成Java動態(tài)代理的實(shí)現(xiàn),說白了就是封裝客戶端需要調(diào)用的方法,然后指定生成的代理對象需要實(shí)現(xiàn)的接口(服務(wù)).

八,總結(jié):

先運(yùn)行MainServer.java啟動服務(wù)器,然后,再運(yùn)行MainClient.java 啟動一個客戶端連接服務(wù)器就可以看到執(zhí)行結(jié)果。

當(dāng)需要添加新的服務(wù)時:按以下步驟即可:①定義服務(wù)接口及其實(shí)現(xiàn)類,如:AnOtherEchoService.java? ②:在MainServer.java中注冊新添加的服務(wù)。

③:在MainClient.java中編寫獲得新服務(wù)的代理對象的代碼,并用該代理對象調(diào)用新服務(wù)接口中聲明的方法。

這樣,在客戶端就能夠遠(yuǎn)程地調(diào)用服務(wù)器上的一個新服務(wù)了。

作為一個JAVA程序員, 應(yīng)該掌握哪些知識, 目前, 比較流行的java開發(fā)框架有哪些,

java基礎(chǔ),三大主流數(shù)據(jù)庫mysql,orcale,sql server;然后是j2ee的相關(guān)知識,也就是java開發(fā)框架。

Spring Framework 【Java 開源JEE框架】

Spring是一個解決了許多在J2EE開發(fā)中常見的問題的強(qiáng)大框架。

Spring提供了管理業(yè)務(wù)對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習(xí)慣。Spring的架構(gòu)基礎(chǔ)是基于使用JavaBean屬性的

Inversion of

Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構(gòu)建完關(guān)注所有架構(gòu)層的完整解決方案方面是獨(dú)一無二的。

Spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進(jìn)了效率并且減少了可能的錯誤。Spring的數(shù)據(jù)訪問架構(gòu)還集成了

Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務(wù)管理抽象,它能夠在各種底層事務(wù)管理技術(shù),例如JTA或者

JDBC事務(wù)提供一個一致的編程模型。Spring提供了一個用標(biāo)準(zhǔn)Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務(wù)管理和其他企業(yè)事務(wù)

--如果你需要--還能實(shí)現(xiàn)你自己的aspects。這個框架足夠強(qiáng)大,使得應(yīng)用程序能夠拋開EJB的復(fù)雜性,同時享受著和傳統(tǒng)EJB相關(guān)的關(guān)鍵服務(wù)。

Spring還提供了可以和IoC容器集成的強(qiáng)大而靈活的MVC Web框架?!維pringIDE:Eclipse平臺下一個輔助開發(fā)插件】.

WebWork 【Java開源Web開發(fā)框架】

WebWork是由OpenSymphony組織開發(fā)的,致力于組件化和代碼重用的拉出式MVC模式J2EE

Web框架。WebWork目前最新版本是2.1,現(xiàn)在的WebWork2.x前身是Rickard

Oberg開發(fā)的WebWork,但現(xiàn)在WebWork已經(jīng)被拆分成了Xwork1和WebWork2兩個項(xiàng)目。

Xwork簡潔、靈活功能強(qiáng)大,它是一個標(biāo)準(zhǔn)的Command模式實(shí)現(xiàn),并且完全從web層脫離出來。

Xwork提供了很多核心功能:前端攔截機(jī)(interceptor),運(yùn)行時表單屬性驗(yàn)證,類型轉(zhuǎn)換,強(qiáng)大的表達(dá)式語言(OGNL – the

Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。

WebWork2建立在Xwork之上,處理HTTP的響應(yīng)和請求。WebWork2使用ServletDispatcher將HTTP請求的變成

Action(業(yè)務(wù)層Action類),

session(會話)application(應(yīng)用程序)范圍的映射,request請求參數(shù)映射。WebWork2支持多視圖表示,視圖部分可以使用

JSP, Velocity, FreeMarker,

JasperReports,XML等。在WebWork2.2中添加了對AJAX的支持,這支持是構(gòu)建在DWR與Dojo這兩個框架的基礎(chǔ)之上.

【EclipseWork:用于WebWork輔助開發(fā)的一個Eclipse插件】

Struts 【Java開源Web開發(fā)框架】

Struts是一個基于Sun

J2EE平臺的MVC框架,主要是采用Servlet和JSP技術(shù)來實(shí)現(xiàn)的。由于Struts能充分滿足應(yīng)用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義標(biāo)簽和信息資源(message

resources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進(jìn)行開發(fā)時不用再自己編碼實(shí)現(xiàn)全套MVC模式,極大的節(jié)省了時間,所以說Struts是一個非常不錯的應(yīng)用框架?!維trutsIDE:用于Struts輔助開發(fā)的一個Eclipse插件】

Hibernate 【Java開源持久層框架】

Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。

Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱茫部梢栽赟ervlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Eclipse平臺下的Hibernate輔助開發(fā)工具:【Hibernate

Synchronizer】【MiddlegenIDE】

Quartz 【Java開源調(diào)度框架】

Quartz是OpenSymphony開源組織在Job

scheduling領(lǐng)域又一個開源項(xiàng)目,它可以與J2EE與J2SE應(yīng)用程序相結(jié)合也可以單獨(dú)使用。Quartz可以用來創(chuàng)建簡單或?yàn)檫\(yùn)行十個,百個,甚至是好幾萬個Jobs這樣復(fù)雜的日程序表。Jobs可以做成標(biāo)準(zhǔn)的Java組件或

EJBs。Quartz的最新版本為Quartz 1.5.0。

Velocity 【Java開源模板引擎】

Velocity是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template

language)來引用由java代碼定義的對象。當(dāng)Velocity應(yīng)用于web開發(fā)時,界面設(shè)計(jì)人員可以和java程序開發(fā)人員同步開發(fā)一個遵循MVC架構(gòu)的web站點(diǎn),也就是說,頁面設(shè)計(jì)人員可以只關(guān)注頁面的顯示效果,而由java程序開發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點(diǎn)的長期維護(hù)提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。

Velocity的能力遠(yuǎn)不止web站點(diǎn)開發(fā)這個領(lǐng)域,例如,它可以從模板(template)產(chǎn)生SQL和PostScript、XML,它也可以被當(dāng)作一個獨(dú)立工具來產(chǎn)生源代碼和報(bào)告,或者作為其他系統(tǒng)的集成組件使用。Velocity也可以為Turbine

web開發(fā)架構(gòu)提供模板服務(wù)(template

service)。Velocity+Turbine提供一個模板服務(wù)的方式允許一個web應(yīng)用以一個真正的MVC模型進(jìn)行開發(fā)?!綱eloEclipse

:Velocity在Eclipse平臺下的一個輔助開發(fā)插件】

IBATIS 【Java開源持久層框架】

使用ibatis 提供的ORM機(jī)制,對業(yè)務(wù)邏輯實(shí)現(xiàn)人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實(shí)現(xiàn)ORM

而言基本一致,而對于具體的數(shù)據(jù)操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發(fā)者編寫具體的SQL

語句。相對Hibernate等 “全自動”O(jiān)RM機(jī)制而言,ibatis

以SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。作為“全自動”O(jiān)RM 實(shí)現(xiàn)的一種有益補(bǔ)充,ibatis 的出現(xiàn)顯

得別具意義。

Compiere ERPCRM 【Java開源ERP與CRM系統(tǒng)】

Compiere

ERPCRM為全球范圍內(nèi)的中小型企業(yè)提供綜合型解決方案,覆蓋從客戶管理、供應(yīng)鏈到財(cái)務(wù)管理的全部領(lǐng)域,支持多組織、多幣種、多會計(jì)模式、多成本計(jì)算、多語種、多稅制等國際化特性。易于安裝、易于實(shí)施、易于使用。只需要短短幾個小時,您就可以使用申購-采購-發(fā)票-付款、報(bào)價-訂單-發(fā)票-收款、產(chǎn)品與定價、資產(chǎn)管理、客戶關(guān)系、供應(yīng)商關(guān)系、員工關(guān)系、經(jīng)營業(yè)績分析等強(qiáng)大功能了。

Roller Weblogger 【Java開源Blog博客】

這個weblogging

設(shè)計(jì)得比較精巧,源代碼是很好的學(xué)習(xí)資料。它支持weblogging應(yīng)有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模板,RSS

syndication,blogroll管理和提供一個XML-RPC 接口。

Eclipse 【Java開源IDE】

Eclipse平臺是IBM向開發(fā)源碼社區(qū)捐贈的開發(fā)框架,它之所以出名并不是因?yàn)镮BM宣稱投入開發(fā)的資金總數(shù)

—4千萬美元,而是因?yàn)槿绱司薮蟮耐度胨鶐淼某晒阂粋€成熟的、精心設(shè)計(jì)的以及可擴(kuò)展的體系結(jié)構(gòu)。

XPlanner 【Java開源項(xiàng)目管理】

XPlanner 一個基于Web的XP團(tuán)隊(duì)計(jì)劃和跟蹤工具。XP獨(dú)特的開發(fā)概念如iteration、user

stories等,XPlanner都提供了相對應(yīng)的的管理工具,XPlanner支持XP開發(fā)流程,并解決利用XP思想來開發(fā)項(xiàng)目所碰到的問題。

XPlanner特點(diǎn)包括:簡單的模型規(guī)劃,虛擬筆記卡(Virtual note cards),iterations、user

stories與工作記錄的追蹤,未完成stories將自動迭代,工作時間追蹤,生成團(tuán)隊(duì)效率,個人工時報(bào)表,SOAP界面支持。

HSQLDB 【Java開源開源數(shù)據(jù)庫】

HSQLDB(Hypersonic SQL)是純Java開發(fā)的關(guān)系型數(shù)據(jù)庫,并提供JDBC驅(qū)動存取數(shù)據(jù)。支持ANSI-92 標(biāo)準(zhǔn)

SQL語法。而且他占的空間很小。大約只有160K,擁有快速的數(shù)據(jù)庫引擎。

Liferay 【Java開源門戶系統(tǒng)】

代表了完整的J2EE應(yīng)用,使用了Web、EJB以及JMS等技術(shù),特別是其前臺界面部分使用Struts

框架技術(shù),基于XML的portlet配置文件可以自由地動態(tài)擴(kuò)展,使用了Web Services來支持一些遠(yuǎn)程信息的獲取,使用 Apahce

Lucene實(shí)現(xiàn)全文檢索功能。

主要特點(diǎn):

提供單一登陸接口,多認(rèn)證模式(LDAP或 SQL);

管理員能通過用戶界面輕松管理用戶,組,角色;

用戶能可以根據(jù)需要定制個性化的portal layout;

能夠在主流的J2EE應(yīng)用服務(wù)器上運(yùn)行,如JBoss+Jetty/Tomcat,JOnAS;

支 持主流的數(shù)據(jù)庫,如PostgreSQL,MySQL;

使用了第三放的開源項(xiàng)目,如Hibernate, Lucene, Struts;

支持包括中文在內(nèi)的多種語言;

采用最先進(jìn)的技術(shù) Java, EJB, JMS, SOAP, XML;

JetSpeed 【Java開源門戶系統(tǒng)】

Jetspeed是一個開放源代碼的企業(yè)信息門戶(EIP)的實(shí)現(xiàn), 使用的技術(shù)是Java和XML. 用戶可以使用瀏覽器,

支持WAP協(xié)議的手機(jī)或者其它的設(shè)備訪問Jetspeed架設(shè)的信息門戶獲取信息. Jetspeed扮演著信息集中器的角色,

它能夠把信息集中起來并且很容易地提供給用戶.

Jetspeed具有如下的特征:

即將成為標(biāo)準(zhǔn)化的Java Portlet API

基于模板的布局, 包括JSP和Velocity

通過開放的內(nèi)容同步技術(shù)支持遠(yuǎn)程XML 內(nèi)容交換

定制默認(rèn)的主頁

使用數(shù)據(jù)庫進(jìn)行用戶認(rèn)證

內(nèi)存緩存技術(shù), 加快頁面的響應(yīng)

通 過Rich Site Summary技術(shù), 支持同步內(nèi)容

和Cocoon, WebMacro, Velocity集成.

Wireless Markup Language (WML) 支持

使用XML格式的配置文件注冊portlet.

完整的 Web Application Archive (WAR) 支持

Web應(yīng)用程序開發(fā)的基礎(chǔ)設(shè)施

可以在本地緩 存遠(yuǎn)程內(nèi)容

與Avantgo同步

可移植到所有支持JDK1.2和Servlet 2.2的平臺

與 Turbine模塊和服務(wù)集成

可以根據(jù)用戶, 安裝媒體類型和語言的不同設(shè)定, 產(chǎn)生不同的個性化服務(wù)

持續(xù)化服 務(wù)使得所由的portlet能夠容易的存儲每個用戶的狀態(tài), 頁面和portlet

使用皮膚技術(shù)使得用戶可以選擇portlet的顏 色和顯示屬性

自定義功能是的管理員可以選擇portlet以及定義個人頁面的布局

在數(shù)據(jù)庫中存儲PSML

通 過Jetspeed的安全portlets管理用戶, 組,角色和權(quán)限

基于角色對訪問portlet進(jìn)行控制

JOnAS 【Java開源應(yīng)用服務(wù)器】

JOnAS是一個開放源代碼的J2EE實(shí)現(xiàn),在ObjectWeb協(xié)會中開發(fā)。整合了Tomcat或Jetty成為它的Web容器,以確保符合Servlet

2.3和JSP 1.2規(guī)范。JOnAS服務(wù)器依賴或?qū)崿F(xiàn)以下的Java API:JCA、JDBC、JTA

、JMS、JMX、JNDI、JAAS、JavaMail 。

JFox3.0 【Java開源應(yīng)用服務(wù)器】

JFox 是 Open Source Java EE Application Server,致力于提供輕量級的Java

EE應(yīng)用服務(wù)器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應(yīng)用的開發(fā)!

如果您正在尋找一個簡單、輕量、高效、完善的Java EE開發(fā)平臺,那么JFox正是您需要的。

JFox 3.0 擁有以下特性:

重 新設(shè)計(jì)的 IoC 微內(nèi)核,融入 OSGi 模塊化思想

設(shè)計(jì)成嵌入式架構(gòu),能夠和任何 Java Web Server集成部署

支 持 EJB3,JPA規(guī)范,支持容器內(nèi)和容器外兩種方式運(yùn)行EJB和JPA組件

支持 EJB 發(fā)布成Web Service

采 用 JOTM()提供事務(wù)處理,支持兩階段提交 (2PC)

采用 XAPool() 提供 XA

DataSource,支持智能連接池管理

內(nèi)置 MVC 框架,實(shí)現(xiàn)自動Form

Mapping,Validator,Uploading等功能,支持JSP/Velocity/Freemarker頁面引擎,并支持直接在

Action中注入EJB

支持多應(yīng)用模塊部署,讓中大型應(yīng)用充分享受模塊化開發(fā)帶來的優(yōu)勢

提供 Manager 管理模塊,可以查看和管理各種運(yùn)行時參數(shù)

提供根據(jù) JFox 特色重寫的 Petstore 應(yīng)用模塊

EasyJWeb 【Java開源Web開發(fā)框架】

EasyJWeb是基于java技術(shù),應(yīng)用于WEB應(yīng)用程序快速開發(fā)的MVC框架,框架設(shè)計(jì)構(gòu)思來源于國內(nèi)眾多項(xiàng)目實(shí)踐,框架充分借簽了當(dāng)前主要流行的開源Web框架(Struts、JSF、Tapestry

、Webwork),吸取了其優(yōu)點(diǎn)及精華,利用Velocity作為模板頁面引擎,是一個實(shí)現(xiàn)了頁面及代碼完全分離的MVC開發(fā)框架。是一個能實(shí)現(xiàn)中小型

Web應(yīng)用系統(tǒng)快速開發(fā)的簡易Web框架。

通過EasyJWeb

Tools提供的配套開發(fā)工具,可以實(shí)現(xiàn)基于EasyJWeb框架的Web應(yīng)用快速開發(fā),包括常用應(yīng)用軟件的代碼自生成、數(shù)據(jù)庫添刪改查(CRUD)代碼生成、自動頁面模版生成、配置文件管理等。

框架特點(diǎn):

零配文件置支持。以前我們每接觸一個框架,開始總都要被

他的配置文件折騰一番。EasyJWeb實(shí)現(xiàn)零配置支持,可以不寫一句配置文件就在框架基礎(chǔ)上構(gòu)建你的運(yùn)用。(適合小型網(wǎng)站系統(tǒng))。

簡 易的模板頁面設(shè)計(jì)支持:放棄使用jsp,使用簡單Velocity腳本語言作為頁面模板。

頁面程序完全分離:實(shí)現(xiàn)顯示頁面與程序邏輯 的完全分離,克服了傳統(tǒng)jsp頁面難于維護(hù)的問題。

基于頁面組件的框架。靈活的頁面組件配置,可以直接通過配置文件設(shè)置字段級的事件 組件。

快速開發(fā)支持:通過EasyJWeb

Tools,可以自動生成應(yīng)用軟件模板代碼,定制并管理自己的J2EE代碼模板,代碼生成模板支持最流行的實(shí)用Java開發(fā)框架(如hibernate、

Spring等)實(shí)現(xiàn)快速開發(fā)。

Tapestry 【Java開源Web開發(fā)框架】

Tapestry是一個開源的基于servlet的應(yīng)用程序框架,它使用組件對象模型來創(chuàng)建動態(tài)的,交互的web應(yīng)用。一個組件就是任意一個帶有

jwcid屬性的html標(biāo)記。其中jwc的意思是Java Web

Component。Tapestry使得java代碼與html完全分離,利用這個框架開發(fā)大型應(yīng)用變得輕而易舉。并且開發(fā)的應(yīng)用很容易維護(hù)和升級。

Tapestry支持本地化,其錯誤報(bào)告也很詳細(xì)。Tapestry主要利用javabean和xml技術(shù)進(jìn)行開發(fā)?!維pindle:Tapestry

輔助開發(fā)Eclipse插件】.

FreeMarker 【Java開源模板引擎】

FreeMarker允許Java

servlet保持圖形設(shè)計(jì)同應(yīng)用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用servlet提供的數(shù)據(jù)動態(tài)地生成

HTML。模板語言是強(qiáng)大的直觀的,編譯器速度快,輸出接近靜態(tài)HTML頁面的速度。

【FreeMarker Eclipse Plugin與FreeMarker IDE:Eclipse平臺下的輔助開發(fā)工具】

Lucene 【Java開源搜索引擎】

Apache

Lucene是一個基于Java全文搜索引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文件的每一個字作索引,索引讓搜尋的效率比傳統(tǒng)的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強(qiáng)大之處除了高效和簡單外,是最重要的是使使用者可以隨時應(yīng)自已需要自訂其功能。

iText 【Java開源PDF類庫】

iText是一個能夠快速產(chǎn)生PDF文件的java類庫。iText的java類對于那些要產(chǎn)生包含文本,表格,圖形的只讀文檔是很有用的。它的類庫尤其與java

Servlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。

Groovy 【Java開源動態(tài)語言】

Groovy是一種基于JVM的敏捷開發(fā)語言,它結(jié)合了Python、Ruby和 Smalltalk的許多強(qiáng)大的特性。

Groovy已在WebWork2中的應(yīng)用。它可以被編譯為標(biāo)準(zhǔn)的Java Bytecode。

OpenCms 【Java開源CMS系統(tǒng)】

OpenCms是一個J2EE的產(chǎn)品,它是用 Java寫成的。它和Tomcat捆綁在一起。但是也能夠使用ATG

Dynamo、WebLogic和WebSphere。OpenCms支持多種RDBMS來保存內(nèi)容,包括Oracle、SQL

Server、Sybase和mySQL。新版本提供了一個新的模板引擎,JSP支持,一種新的連接管理系統(tǒng),提高了穩(wěn)定性。

JUnit 【Java開源測試工具】

JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing

framework)。Junit測試是程序員測試,即所謂白盒測試,因?yàn)槌绦騿T知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進(jìn)行自動測試了。

BlueJ 【Java開源IDE】

BlueJ是一個專門為入門級教學(xué)設(shè)計(jì)的JavaTM 開發(fā)環(huán)境。它是由澳大利亞墨爾本Monash大學(xué)BlueJ小組設(shè)計(jì)并開發(fā)的。

XWiki 【Java開源Wiki系統(tǒng)】

XWiki是一個強(qiáng)大的Java開源的Wiki引擎。它支持一些受歡迎的特性如:

內(nèi) 容管理(瀏覽/編輯/預(yù)覽/保存),

支持附件,

版本控制,

全文本搜索,

權(quán) 限管理

使用Hibernate進(jìn)行數(shù)據(jù)存儲,

RSS輸出與顯示外部的RSS feeds,

多 語言支持,

提供XML/RPC的API,

WYSIWYG HTML編輯器,

導(dǎo)出為PDF

Groovy 腳本支持等等....。

EJBCA 【Java開源網(wǎng)絡(luò)服務(wù)器端組件】

EJBCA是一個全功能的CA系統(tǒng)軟件,它基于J2EE技術(shù),并提供了一個強(qiáng)大的、高性能并基于組件的CA。EJBCA兼具靈活性和平臺獨(dú)立性,能夠獨(dú)立使用,也能和任何J2EE應(yīng)用程序集成。

JXTA 【Java開源其它項(xiàng)目】

Sun微系統(tǒng)公司公開了旨在建立P2P(Peer to

Peer)通用技術(shù)基礎(chǔ)的JXTA計(jì)劃。JXTA技術(shù)是網(wǎng)絡(luò)編程和計(jì)算的平臺,用以解決現(xiàn)代分布計(jì)算尤其是點(diǎn)對點(diǎn)(P2P)計(jì)算中出現(xiàn)的問題。

JXTA將建立核心的網(wǎng)絡(luò)計(jì)算技術(shù),提供支持在任何平臺、任何地方以及任何時間實(shí)現(xiàn)P2P計(jì)算的一整套簡單、小巧和靈活的機(jī)制。JXTA首先將歸納目前

P2P的功能特別,而后建立核心的技術(shù)來表達(dá)目前的P2P計(jì)算的局限性。其重點(diǎn)是創(chuàng)建基本的機(jī)制,而具體的策略選擇權(quán)則交給應(yīng)用的開發(fā)者。JXTA將充分利用XML、Java等開放技術(shù),使得UNIX操作系統(tǒng)更強(qiáng)大和靈活,比如利用管道(Pipes)傳輸Shell命令實(shí)現(xiàn)復(fù)雜的計(jì)算任務(wù)。JXTA支持

P2P應(yīng)用的基本功能來建立一個P2P系統(tǒng),還將努力證實(shí)這些可以成為建立更高層功能的基礎(chǔ)構(gòu)造模塊。JXTA架構(gòu)可以分為三個層面:JXTA核心層、

JXTA業(yè)務(wù)層和JXTA應(yīng)用層。

DWR 【Java開源AJAX框架】

DWR(Direct Web

Remoting)是一個WEB遠(yuǎn)程調(diào)用框架.利用這個框架可以讓AJAX開發(fā)變得很簡單.利用DWR可以在客戶端利用JavaScript直接調(diào)用服務(wù)端的Java方法并返回值給JavaScript就好像直接本地客戶端調(diào)用一樣(DWR根據(jù)Java類來動態(tài)生成JavaScrip代碼).它的最新版本

DWR0.6添加許多特性如:支持Dom Trees的自動配置,支持Spring(JavaScript遠(yuǎn)程調(diào)用spring

bean),更好瀏覽器支持,還支持一個可選的commons-logging日記操作.

ZK 【Java開源AJAX框架】

ZK是一個Ajax Java Web框架,利用少量代碼就能夠開發(fā)出擁有Rich

UI的Web應(yīng)用。ZK提供基于XUL的標(biāo)記語言和事件驅(qū)動的組件,可以讓你像開發(fā)桌面應(yīng)用程序一樣簡單。支持EL表達(dá)式和腳本語言包括:JavaScript、Ruby和Groovy等。支持Annotation及數(shù)據(jù)綁定。集成Google

Maps、FCKeditor、DOJO以及Timeline。


網(wǎng)站名稱:java程序員rpc代碼,java中rpc
分享路徑:http://weahome.cn/article/hcsiig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部