国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
用Java進(jìn)行基于瀏覽器的桌面應(yīng)用程序開發(fā)(Browser

用Java進(jìn)行基于瀏覽器的桌面應(yīng)用程序開發(fā)(Browser-based desktop application development with java)

作者:Andy(http://blog.xintiantang.com/andy),轉(zhuǎn)載請先聯(lián)系我

這篇文章于2005/08/30 20:00開始,計劃在一個月內(nèi)完成,所以將會人工置頂。內(nèi)容有點(diǎn)兒亂,先把想的和做的記下來,然后再慢慢整理。同時歡迎提出你的看法。

對于普通用戶來說,使用傳統(tǒng)的桌面應(yīng)用程序(可能采用不同語言和工具開發(fā)的)可能存在這樣那樣的限制,比如界面風(fēng)格千變?nèi)f化、操作習(xí)慣不統(tǒng)一、學(xué)習(xí)難度大、無法或很難和外部應(yīng)用通信等。而傳統(tǒng)的服務(wù)器端應(yīng)用程序或網(wǎng)站也存在許多限制,比如網(wǎng)絡(luò)連通可能出現(xiàn)問題、響應(yīng)速度慢、不能保證服務(wù)器端始終可用、擔(dān)心數(shù)據(jù)安全和個人隱私問題、不夠靈活、使用不方便等。

 而基于瀏覽器的桌面應(yīng)用程序正是綜合桌面應(yīng)用程序和服務(wù)器端應(yīng)用程序的功能產(chǎn)生的。它包含以下優(yōu)點(diǎn):

  • 統(tǒng)一的、簡單易用的操作界面(基于瀏覽器,比如IE或FireFox,用戶只須要熟悉瀏覽器)
  • 每個應(yīng)用都可以當(dāng)成服務(wù)器端應(yīng)用程序(只要聯(lián)網(wǎng)并開放端口就可以允許其他人遠(yuǎn)程運(yùn)行)
  • 更容易和外部應(yīng)用進(jìn)行通信
  • 。。。

基于瀏覽器的桌面應(yīng)用程序(Browser-based desktop application)的定義:一個包含嵌入式網(wǎng)站服務(wù)器(Embedded web server)的能夠在瀏覽器內(nèi)的客戶端的獨(dú)立運(yùn)行(Stand alone)的應(yīng)用程序。

我把基于瀏覽器的桌面應(yīng)用程序(Browser-based desktop application)簡稱為BBDA。其實(shí)BBDA和AJAX技術(shù)一樣,也是一個buzzword,而不是什么新技術(shù),只不過把幾種通用的軟件或技術(shù)組合在一起而已。

其實(shí),BBDA很符合目前熱炒的WebOS(基于網(wǎng)絡(luò)瀏覽器的操作系統(tǒng))的特性,這方面Google做了個最好的Demo:Google Desktop, 在GD中,一切內(nèi)容的表現(xiàn)都是網(wǎng)頁(雖然隱藏了瀏覽器),并且很容易和Google網(wǎng)站進(jìn)行通信(比如同時搜索本地和搜索Web,利用RSS或XML-PRC或SOAP之類的協(xié)議讀新聞、郵件、天氣預(yù)報、股票行情等)?,F(xiàn)在GDS(Google Desktop Search)只是GD的一個模塊而已,百度的桌面搜索只是單純地模仿了GDS,卻沒有猜到原來Google是要做GD,好傻的百度。Google這幾年的收購和挖人活動(Google寬帶, Google browser等),看來一切都是為了WebOS而努力。這里順便說一下Yahoo剛收購的Konfabulator,Konfabulator和GD有很大不同,我覺得它只是包含許多小軟件或和網(wǎng)站交互的工具,只是個玩具箱而已,要做WebOS靠這個可以嗎?看來Yahoo的眼光似乎始終不如Google。推薦看看這篇文章:GoogleOS? YahooOS? MozillaOS? WebOS?

由于我主要做Java開發(fā),所以只列出可能涉及的Java軟件包:Browser(IE/FireFox), JDK, Tomcat/Jetty, HSQLDB/Apache Derby, Hibernate, Lucene, Struts/WebWork/JSF/Tapestry/Wicket/Flex&Laszlo(Flash RIA), DWR(AJAX), Apache Web Services(SOAP/XML-RPC), Apache POI(Word/Excel/ PDF), MP3 ID TAG 3 lib ,JPEG EXIF lib...

我的目的是組合幾種通用的JAVA軟件,用來進(jìn)行快速的BBDA開發(fā)。對于開發(fā)者而言,只要選好合適的軟件,并合理組合起來,完全可以達(dá)到或超過Ruby on rails的功能和開發(fā)效率。同時,對于普通用戶而言,只要打開瀏覽器輸入http://localhost就行了,用戶可以在瀏覽器里管理日記(blog?)、日歷、通訊錄、照片(flickr?)、音樂(itunes?)、文件、網(wǎng)摘(delicious?)、閱讀訂閱的RSS(bloglines?)、查看郵件(web mail)、新聞之類等,并可以進(jìn)行搜索、共享、發(fā)布、與外部應(yīng)用或網(wǎng)站同步等,構(gòu)成一個完整的個人門戶系統(tǒng)(Personal portal)。

接下來我會發(fā)布一個進(jìn)行BBDA開發(fā)的基礎(chǔ)軟件包(將會包含一個簡單的相冊的BBDA),下面是我對基礎(chǔ)軟件包的說明。

關(guān)于嵌入式網(wǎng)站服務(wù)器(Embedded web server):

我這幾天試用了Jetty和Tomcat。總以為Jetty很小呢,最適合做BBDA呢,結(jié)果發(fā)現(xiàn)軟件包也很大了,另外很多功能不如Tomcat,Tomcat Embed 5.5由于使用Ecipse JDT,現(xiàn)在已經(jīng)很小了(3M左右),而且標(biāo)準(zhǔn),所以選了Tomcat Embed(這里下載)。下面的代碼是Tomcat Embed的啟動程序。

Start.java:

package com.terac.tomcat;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;

public class Start {
 public static void main(String[] args) {
  try {
   String path = System.getProperty("SERVER_HOME");
   if(path!=null&&!"".equals(path)){    
    int port = Integer.parseInt(System.getProperty("SERVER_PORT","8080"));
    startTomcat(path,port);
   }   
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 private static void startTomcat(String path,int port) throws UnknownHostException,
   LifecycleException {
  System.setProperty("catalina.home", path);
  Embedded embedded = new Embedded();
  Engine engine = embedded.createEngine();
  engine.setName("Engine");
  Host host = embedded.createHost("localhost", "web");
  Context rootContext = embedded.createContext("", "");
  rootContext.setPrivileged(true);
  host.addChild(rootContext);
  engine.addChild(host);
  engine.setDefaultHost("localhost");
  embedded.addEngine(engine);
  Connector connector = embedded.createConnector((InetAddress) null,port, false);
  embedded.addConnector(connector);
  embedded.start();
 }
}

start.bat:

@set classpath=./lib/所有的jar文件
@java -DSERVER_HOME=%cd% -DSERVER_PORT=80 -classpath %classpath% com.terac.tomcat.Start

關(guān)于嵌入式數(shù)據(jù)庫(Embeded database):

Apache Derby雖然比HSQLDB強(qiáng)大,但還是太大了,尤其是當(dāng)用到IBM的JDBC Driver時。所以只好選HSQLDB。下面的代碼是在Web應(yīng)用程序啟動時啟動HSQLDB服務(wù)器。

HSQLDBServletContextListener.java:

還未整理好

web.xml中需要加入listener:

com.terac.hsqldb.HSQLDBServletContextListener

關(guān)于全文檢索引擎(Full text search engine):

Apache Lucene應(yīng)用廣泛,也足夠強(qiáng)大,高亮顯示(Highlighting)需要自己實(shí)現(xiàn),自動摘要(autosummarize)需要Classifier4j 。下面是常用類的封裝代碼:

Indexer.java:

還未整理好

Searcher.java:

還未整理好

Highlighter.java:

還未整理好

關(guān)于對象關(guān)系映射工具(OR mapping tools):

Hibernate是最常用最強(qiáng)大的工具。下面是Hibernate Session的封裝代碼:

HibernateUtil.java:

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Session;
import net.sf.hibernate.cfg.Configuration;
import org.apache.log4j.Logger;

public class HibernateUtil {
 private static Log log = LogFactory.getLog(HibernateUtil.class); 
 public static final ThreadLocal threadSession = new ThreadLocal();
 private static final SessionFactory sessionFactory;
 static {
  try {
   sessionFactory = new Configuration().configure().buildSessionFactory();
  } catch (Throwable ex) {
   // We have to catch Throwable, otherwise we will miss
   // NoClassDefFoundError and other subclasses of Error
   log.error("Building SessionFactory failed.", ex);
   throw new ExceptionInInitializerError(ex);
  }
 }
    public static Session currentSession() throws HibernateException {       
        Session s = (Session) threadSession.get();
        if (s == null) {
            s = sessionFactory.openSession();
            threadSession.set(s);
        }
        return s;
    }
    public static void closeSession() throws HibernateException {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null)
            s.close();
    }
}

關(guān)于模型-視圖-控制框架(MVC framework):

現(xiàn)在的MVC framework太多了,傳統(tǒng)的有Struts/WebWork,新的有JSF/Tapestry/Wicket/Flex&Laszlo(Flash RIA) ,Wicket網(wǎng)站列出了55種之多!我試過JSF,始終不能另我滿意,正在嘗試這個Wicket。

今天寫到這,待續(xù)。。。

Andy 2005/08/31 14:45 | 技術(shù) |

評論

Alan Cooper很牛,但他說的話可不是圣經(jīng)啊,沒有什么是永遠(yuǎn)不變的。

Posted by: Andy www at 2005/08/31 15:41

Browser-based desktop application以前也聽說過,你說GDS我就一下明白了,嚴(yán)重關(guān)注中

Posted by: duduwolf www at 2005/08/31 04:02

技術(shù)太深奧了,我看不懂,先學(xué)習(xí)兩個初步的感覺:1、不能說瀏覽器就易用,人機(jī)交互的看法是,瀏覽器使人機(jī)交化工程的發(fā)展倒退了10年,原文記不住了,有時間找出來,alan copper說的2、你的browserbased其實(shí),好像,也可以叫做Web enable application,從這個角度上看,我理解目前是一種商業(yè)折中方案,即既可以部署在本機(jī)也可以部署在BS架構(gòu)特別聲明,不是拍磚,一點(diǎn)想法,期盼你的文章完成并學(xué)習(xí)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入接觸 Google Web Toolkit 開發(fā)過程(1)
Jetty介紹
Beef up Web search applications with Lucene
Mule入門文檔
常用的java應(yīng)用服務(wù)器
tomcat做成服務(wù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服