piaoyi's blog - 站在煩惱裡仰望幸福

Main | Next page »

http://www.javaworld.com.tw/roller/piaoyi/date/20100409 Friday April 09, 2010

設定開啟 eclipse 時要跳出選擇工作區的視窗

設定開啟 eclipse 時要跳出選擇工作區的視窗

前陣子不知為什麼,明明沒有在選工作區的視窗中,勾選設為預設的工作區checkbox,
但某天突然 eclipse 就自動會開那個工作區,不再出現選擇視窗,
變成要進 eclipse 後再 switch workspace = =",
超麻煩也多載一次,想改又不知在哪改,以為在 eclipse.ini,但又不是,最後就算了...

今天不知為啥,心血來潮來找看看有沒有其他設定,
結果找到了^^,

要啟用當開啟 eclipse 時跳出選擇工作區的視窗,需要設定如下:

編輯 eclipseHome/configuration/.settings/org.eclipse.ui.ide.prefs 檔案,
修改這一行 SHOW_WORKSPACE_SELECTION_DIALOG=true
ok,搞定。

心血來潮,又想看看能不能在 eclipse IDE 中設定,結果又找到了= =,
天殺的,以前找那麼多次都沒看到,怎麼今天這麼順,都看到了,是眼睛今天才真正有上班嗎>"<

透過IDE設定:
勾選 Windows/Preference/General/Startup and Shutdown/Workspaces/[checkbox]Prompt for workspace on startup


http://www.javaworld.com.tw/roller/piaoyi/date/20080606 Friday June 06, 2008

下一代 Java Plug-in 特色

目錄


前言

由於目前的 Applet 有許多的問題,不管是穩定度,效率,和版本相容度都很不好用,上網找了一下資料,沒想到 sun 已經在改版了,且會在 java 6 update 10 上套用,所以在此先翻譯並截錄一下在 jdk6 release 中提到的重點。

原文網址: Release Notes for the Next-Generation Java Plug-In Technology

簡介

Java Plug-in 是內建在 Java Runtime Evnironment 中,用來讓 Java Applet 可在各個瀏覽器中使用的技術。
而下一代的 Java Plug-in 將在 Java SE6 Update 10 發行,提供 Applet 更強的可靠度和功能,並且相容舊的版本。

下一代的 Java Plug-in 重新被設計並實作,取消了以往執行 Applet 時的 JVM 是在 web browser 中的 OS process 下跑,而改以新的且獨立在 web browser 外的 OS process 下跑。也因為讓執行 Applet 的 JVM 和 web browser 是不同的 OS process,所以為了提高 JVM 和 web browser 中溝通能力,也提供了許多新的特性,說明如下。

特色

Improved reliability 執行 Applet 的 JVM 在同樣的 OS 層中獨立在 web browser 外跑,如果 Applet 有問題或是不肯關閉,新一代的 Java Plugin 會偵測並處理這些錯誤,而不會影響到 web browser 的運作。
Built-in JNLP support 新一代的 Java Plug-in 提供可以直接透過Java Web Start 使用的 JNLP 檔案來啟動 Applet 的能力。所以開發人員現在可以在 Applet 中使用 JNLP 特性帶來的進階功能,如- JavaFX run-time libraries, 3D graphics via OpenGL, and planetary-scale terrain visualization,Applet 現在可以透過 JNLP APIs 達到永續性的資料儲存,Client 端的檔案存取,和其他 sandboxed code 中有用的功能。
Per-applet command-line arguments 每一個 Applet 可以使用不同的 JVM 啟動參數,如調整 heap size, Java 2D 硬體加速特色。使用 JNLP 來啟動 Applet,則可以吧 JVM 的啟動參數或 system properties 設定在 JNLP 檔案內即可。而用以前一般網頁的 Applet tag 則可以將這些參數設定在網頁 html 中。
Multiple JRE version support 每一個 Applet 可以要求在不同的 JVM 中執行。這個特色是設計用來給企業級的使用者,讓他們可以讓 Applet 在不同的 JRE 版本中執行。
Improved Java/JavaScript communication 用來提供 Web Browser 中的 JavaScript 引擎與 Java programming language 溝通的*橋樑*,已被重新實作。新的實作在 Java 呼叫 JavaScript,或是 JavaScript 呼叫 Java 的能力中,提供了往前的相容性與新的特性,提高了可靠度、效能,與跨 browser 的可攜性。
從前 Mozilla 才有的 "LiveConnect" 功能-從 JavaScript 去呼叫 static java method、建立(new)一個 java object,或引用 3rd-party 的 package。這些功能,都可以在所有的 Browser 中使用了。
Improved user experience 新一代 Java Plug-in 會在背景啟動 Applet,所以在 Applet 未準備好時,網頁都是可以操作的,而 Applet 只會在可執行時才出現在網頁上。
Improved applet lifecycle management 改進了由各家 Browser 行為決定呼叫 applet 的 init(), start(), stop(), destroy()。Applet Class loader 為了往前相容,也快取和保留了 applet lifecycle。
Better large heap support 以前,最大的 heap size 必須透過用戶端電腦的 Java Control Panel 來設定,現在,已經可以直接透過 Applet 參數來設定了。
Better Windows Vista support 在 Vista 的保護模式 IE 中執行簽章過的 Applet,已經可以擁有像一般應用程式的權利,解決了在這個平台上的可攜性。

支援的平台和瀏覽器

新一代 Java Plug-in 設計用來在底下的瀏覽器中工作:

  • Internet Explorer 6 and 7 on Windows XP and Vista
  • Firefox 3 on Windows XP, Windows Vista, Solaris and Linux

在 <applet>, <object> 和 <embed> 中加入的新參數(好樣的,重點在這啦)

大部份在新一代 Java Plug-in 中新的功能,是透過 <applet>, <objtct> 和 <embed> 這些 tag 來引用。

官方建議透過 Deployment Toolkit 來自動產生在 HTML 中用的 applet tag。這裡有 deployment advice 說明書來說明如何使用 Deployment Toolkit。

底下等下會介紹的參數,可以簡單的透過一個 parameters 陣列傳給 Deployment Toolkit's JavaScript library 的 runApplet method。或者,你可以手動的使用 PARAM tag 或相同功能的 EMBED tag 來加入這些參數進你已經存在的 Applets。請查閱 Java Plug-In GuideUsing APPLET, OBJECT and EMBED tags 章節來了解更多細節。
底下的介紹都直接使用 <applet> 和 <param> tag 來說明。

所有的參數都是非必要的,若沒設定,則都使用各參數的預設值。

JNLP Support (Applet 可以直接引用現存的 java web start 程式,soso 啦)

新一代 Java Plug-in 可以使用 JNLP 檔案格式來當做啟動 Applet 的描述子,如此,Applet 就可以直接使用以前已經寫好的 Java Web Start 應用程式而不用重寫,使用參數 jnlp_href 來設定 JNLP 檔案的位址。

jnlp_href

參考 JNLP Support in the New Java Plug-In 以得到更多訊息。

<applet width="300" height="300" code="PiaoApplet" archive="piao.jar">
     <param name="jnlp_href" value="piao.jnlp">
</applet>

Loading Screen (終於,可以做自己的啟動畫面了)

新一代的 Java Plug-in 可以拿我們自己做的影像來做為 Applet 載入前的啟動畫面,且支援動畫的 GIF 格式。只要使用參數 image ,更多細節在 Java Plug-In Developers' GuideSpecial Attributes 中。並且又增加了底下二個參數 boxborder, centerimage

<APPLET archive="piao.jar" code="PiaoApplet" width="300" height="300">
     <!-- 使用一個動畫的 GIF 做為啟動畫面 -->
     <PARAM NAME="image" VALUE="animated_logo.gif">
     <!-- Applet 中的影像是否要有一個邊框 -->
     <PARAM NAME="boxborder" VALUE="false">
     <!-- 置中影像 -->
     <PARAM NAME="centerimage" VALUE="true">
</APPLET>

boxborder

一個 boolean 值,用來指示要不要在影像的周圍加一個 1-pixel 的邊框。預設值是 true。
官方建議設成 false 較好看。

centerimage

一個 boolean 值,用來指示要不要把影像置中,而不是在左上角,預設值是 false。

Command-line Arguments and JRE Version Selection

注意,java_argumentsjava_version 的參數在這設定是因為本質上的考量所做的權宜之計,建議的設定方式是透過 JNLP 設定。

java_arguments (哇,jvm 的啟動參數可以在 applet 參數中設定耶)

範例:
1.設定 max heap size.

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-Xmx128m">
</APPLET>

2.設定 max heap size 與 Java 2D 硬體加速選項(通常在 Applet 透過 JOGL 使用 OpenGL 時)

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-Xmx256m -Dsun.java2d.noddraw=true">
</APPLET>

3.啟用GC 的 verbose 輸出與 Assertion。

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-verbose:gc -ea:MyApplet">
</APPLET>

更多訊息:
Java Web Start Developers' GuideJNLP File Syntax 中定義了一些安全的 JVM 參數和 system properties。在新一代的 Java Plug-in 中,可在 java_arguments 中設定的是安全的參數,這樣這個 applet 在載入這些 class 時,這些 class 不需要被簽章。
因 java_arguments 也可設定不安全的參數,這樣就會有安全上的風險。所以 Java Plug-in 強制不載入這些 class,除非這些 class 是被信任的或是簽過章的,否則會丟出 ClassNotFoundException。

另外還有一些 JVM 參數是不允許的,如 -Xbootclasspath,-classpath 或 -jar 等。

注意,在 Client 電腦中的 Java Control Panel 中設定的 JVM 參數,是會套用在所有啟動的 JVM 上的,而透過 Applet 上的 java_arguments 參數設定的 JVM 參數,是不會全部取代 Client 電腦上另外設定的 JVM 參數。

java_version (厚厚,終於又可以指定 applet 使用的 jre 版本了)

設定 Applet 使用的 JRE 版本。
範例.
1.設定一個唯一的版本。

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_version" value="1.5.0_09">
</APPLET>

2.設定某一個系列的版本。

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_version" value="1.5*">
</APPLET>

可往前使用的JRE 版本,參考 JRE Version Selection in the Next-Generation Java Plug-In,截取重點如下:

  • Windows Platform 可啟動到 JRE 1.4.2 版。
  • Solaris and Linux 只能啟動到 JRE 5 版。

separate_jvm (哇X,同一個網頁不同的 applet 可以用不同的 jvm 咧)

一個 boolean 值,用來指示該 Applet 是否使用自己有的 JVM instance。這個功能是為了讓使目者可以建立像桌面軟體一樣強的功能的 Applet。

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="...">
    <PARAM name="separate_jvm" value="true">
</APPLET>

Class Loader Caching (嘻,不用怕不同 applet 使用相同的 static member 了)

通常,如果有二個 Applet 有相同的 codebase 和 archive 參數,則會使用同一個 class loader 來載入。
新一代的 Java Plug-in 提供了二個使用同一個 JVM 的 Applet ,可以有各自的 class loader 載入 class,而不用同一個,如此,這樣像引用同一個 class 的 static member 時,就不用衝突(如,我可能用一個 class 來放 UI 上使用的字型名稱,而這個我把它設為 static)。
這個參數名為 classloader_cache,預設值為 true。

classloader_cache

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="classloader_cache" value="false">
</APPLET>

Java Control Panel Changes

Applet Runtime Settings

原本在 Control Panel 中,只有在 Java Web Start 那塊設定中才有的 Find 和 Add, Remove 按鈕,現在在 Java Runtime Versions 裡也有了,而且也可以設定使用的 JVM 參數和是否讓某版 JRE 可在 Browser 使用的 checkbox。

Switching Between the New and Classic Plug-ins (想用新功能嗎,來這設定就對了)

為了相容性考量,若想用這些新的功能設定,必須在 Java Control Panel 中設定為啟用,才可以生效。

New LiveConnect Specification

用來提供 Web Browser 中的 JavaScript 引擎與 Java programming language 溝通的*橋樑*,已被重新實作。新的實作在 Java 呼叫 JavaScript,或是 JavaScript 呼叫 Java 的能力中,提供了往前的相容性與新的特性,提高了可靠度、效能,與跨 browser 的可攜性。
從前 Mozilla 才有的 "LiveConnect" 功能-從 JavaScript 去呼叫 static java method、建立(new)一個 java object,或引用 3rd-party 的 package。這些功能,都可以在所有的 Browser 中使用了。

Experimental Functionality (竟然可以把 Applet 拉出 web browser 外面跑= =)

這個是指在新版的 Java Plug-in 中,我們可以把一個正在執行的 Applet,拉到 web browser 外,變成一個 desktop 上跑的應用程式。而且還可以透過桌面上的圖示來重新啟動這個程式。

因為 Sun 在這註明了未來可能會保留或拿掉 Experimental Functionality 這個特色,所以不確定這項功能會不會存在,我就不再說明下去,直接寫上他說明的使用方式,還有列出哪些在拖曳的過程中會觸發的事件,你可以用來處理。

// 在 applet tag 中設定 draggable 參數,
<param name="draggable" value="true">
public boolean isAppletDragStart(MouseEvent e); 
public void appletDragStarted(); 
public void appletDragFinished(); 
public void setAppletCloseListener(ActionListener l); 
public void appletRestored();


http://www.javaworld.com.tw/roller/piaoyi/date/20080529 Thursday May 29, 2008

Useful Eclipse Plugins

記錄一下我常用的 Eclipse Plugin,好在換新版 Eclipse 時,還記得要裝哪些 Plugin。
我都直接抓Eclipse+WTP SDK,所以 WTP 和 GEF plugin 就不寫了。

因為還在整理,已忘了有裝哪些,所以會再持續更新。

我必用的 Plugin

Subclipse
Update Site: http://subclipse.tigris.org/update_1.6.x
Description: Subversion 版本控制工具。
Properties Editor (Resource Bundle Editor)
Update Site: http://propedit.sourceforge.jp/eclipse/updates/
Description: 編輯I18N .properties 用的Editor,編輯時可以用你的字元集(假設是zh_TW,即你在看和編輯時,都是中文呈現),存檔時他會自動轉成 unicode \uxxxx,但編輯時不會看起來是 \uxxxx (native2ascii)。
我習慣用這個。
JInto (Resource Bundle Editor)
Update Site: http://www.guh-software.de/eclipse/
Description: 編輯I18N .properties 用的Editor,一個頁面含全部語系的 .properties ,以 Table 方式呈現來填入,編輯時看起來一樣是對應的字元集,不會是 \uxxxx (native2ascii)。
這個功能較強大,所以我也裝,也因我裝了二個處理 .properties 的plugin,所以這個我都用 open with 方式來選擇用這個 plugin 開啟 .properties。
Implementors
Update Site: http://eclipse-tools.sourceforge.net/updates/
Description: 讓 Eclipse 可以追蹤 Concrete class method 的工具。
java editor 上,你可以點一個 class or method name,然後按右鍵選 Open Declaration 跳去看他的內容,但如果這個 class or method 是 interface,你跳過去看就沒意義,這個 plugin 就是讓你可以跳到實作 interface 的 concreate class 來觀看,只要點了之後,按右鍵選 Open Implementation 即可。
Lifesting
Download URL: http://www.blogjava.net/lifesting/archive/2008/04/11/192250.html
Description: 讓你可以將文件的原本編碼A轉成編碼B。
這在變更 Eclipse 工作區 charset encoding時很有用,可能原本是 MS950,在透過變更 Eclipse Preferences 後把 encoding 改 UTF-8,會讓原本有中文的檔都變亂碼。
用這個工具,你可以在未將工作區從 MS950 變更為 UTF-8 前,先用 Lifesting 來將文件轉成 UFT-8,再將工作區變更為 UTF-8 即可。
Maven2
Update Site: http://m2eclipse.sonatype.org/sites/m2e
Description: Maven - A software project management and comprehension tool。
比 Ant 強大的 framework,應該不能直接比,但ant 的功能,maven 都辦的到,而且很多 opensource 的 project 目前也都從 ant 改用 maven 來建置與管理。
而這個是 Maven Plugin for eclipse,讓我們可以不用下 command 的方式執行。
SpringIDE
Update Site: http://springide.org/updatesite/
Description: SpringIDE,讓你可以在 Eclipse 中以樹狀圖形來觀察 spring xml config 中的 bean reference 關係,且在 xml 中提供 auto complete 功能與檢查 xml 中設定 class 是否存在。
TestNG
Update Site: http://beust.com/eclipse
Description: TestNG。一個比 JUnit 強的Test Framework。可以用 Java Annotations 來設定,也可以用來跑 JUnit。
Mylyn
Update Site: http://download.eclipse.org/tools/mylyn/update/e3.3
Description: Mylyn,一個 Task Focus Development Tool。除了 local repository,也可和某些 Issue System 結合使用,如 JIRA,Bugzilla,Trac。
Mylyn Extras
Update Site: http://download.eclipse.org/tools/mylyn/update/extras
Description: Mylyn Extras:JIRA,Trac Connector 要從這裝。
CheckStyle
Update Site: http://eclipse-cs.sourceforge.net/update
Description: 編碼標準分析。
讓開發自動化:用 Eclipse 插件提高代碼質量
Coverlipse
Update Site: http://coverlipse.sf.net/update
Description: 測試代碼覆蓋率。
讓開發自動化:用 Eclipse 插件提高代碼質量
CPD
Update Site: http://pmd.sourceforge.net/eclipse
Description: 複製/粘貼檢驗。
讓開發自動化:用 Eclipse 插件提高代碼質量
JDepend
Update Site: http://andrei.gmxhome.de/eclipse
Description: 包依賴項分析。
讓開發自動化:用 Eclipse 插件提高代碼質量
此 update site 同時還有其他有用的 plugin,如下:
FileSync plugin
Extended VS Presentation plugin
Bytecode Outline plugin
AnyEdit plugin
http://andrei.gmxhome.de/eclipse.html
Metrics
Update Site: http://metrics.sourceforge.net/update
Description: 複雜度監控。
讓開發自動化:用 Eclipse 插件提高代碼質量
FindBugs
Update Site: http://findbugs.cs.umd.edu/eclipse
Description: FindBugs。
FindBugs:提高代碼質量
Fat Jar
Update Site: http://kurucz-grafika.de/fatjar
Description: 一個幫你把所有的 class 和引用的 jar 匯出成一個 jar 的工具。
http://fjep.sourceforge.net/
Eclipse HTTP Client (Http4E)
Update Site: http://www.ywebb.com/http4e/install/
Description: 一個一個可以製造 HTTP Calls 的 Eclipse GUI,對 Web Development, Web Services and Rest Services 好用的工具。
http://http4e.roussev.org/

我選用的 Plugin

Keytool
Update Site: http://keytool.sourceforge.net/update/
Description: Keytool is an Eclipse plugin that maintains keystores and certificates。
Groovy
Update Site: http://dist.codehaus.org/groovy/distributions/update/
Description: Plugin for compile and run groovy。
Android
Update Site: https://dl-ssl.google.com/android/eclipse/
Description: 開發 Google Phone 用的 Toolkit。
EclipseMe
Update Site: http://www.eclipseme.org/updates/
Description: 開發 Java ME 用的 Toolkit。
Visual Editor
Download URL: http://eclipse.org/vep
Description: Eclipse Visual Editor,一個視覺化的 AWT, Swing, SWT 編輯工具。
聽說 Netbeans 的 VE 比較強比較好用,不過我已習慣直接寫Swing Code 而沒用 VE,所以我也懶的試 Netbeans,也不想要開發過程一下子用 Netbeans 一下子用 Eclipse,不過 Eclipse VE 覺的小~~容易當,我都拿它來拉簡單的畫面測試用而已。
SQL Explorer
Update Site: http://eclipsesql.sourceforge.net/
Description: 可在 Eclipse 中連 DB 的 Tool。
AntView
Download URL: http://r2tech-eclipse.sourceforge.net/
Description: 可把 ant build file 圖形化顯示。
Eclipse Version Tree Plugin for CVS
Download URL: http://versiontree.sourceforge.net/
Description: 把CVS上文件的各版本以樹狀連結顯示變化。
QOLdap
Download URL: http://qoldap.sourceforge.net/
Description: Eclipse 中的 LDAP Browser。(尚未測試)
Apache Directory Studio
Update Site: http://directory.apache.org/studio/update/1.x/
Description: Eclipse 中的 LDAP Browser 和 Editor。(尚未測試)
Jode Decompiler
Update Site: http://www.technoetic.com/eclipse/update
Description: Eclipse下的Java decompiler。試用jdk1.5一直反組譯失敗,可能只能 jdk1.4 以前版本。
JavaFX
Update Site: http://download.java.net/general/openjfx/plugins/eclipse/site.xml
Description: JavaFX
Eclipse Regular Expression Tester
Update Site: http://brosinski.com/regex/update
Description: Regular Expression Tester,裝了沒測,不確定好不好用。
QuickREx
Download URL: http://sourceforge.net/projects/quickrex/
Description: 也是一種 Regular Expression Tester
QuickREx Doc
UniMod
Download URL: http://unimod.sourceforge.net/
Description: UniMod 是一個 Executable UML 的 Implement,不過我還沒時間試用。
Eclipse wiki Editor
Update Site: http://www.stateofflow.com/UpdateSite
Description: A powerful project documentation tool linking documentation to eclipse resources, web sites, bug tracking tools and other Wikis。(尚未測試)
http://eclipsewiki.sourceforge.net



Main | Next page »