Buy Reviews
Powered by MaxBlogPress  

Archive for the ‘java’ Category

Fat Jar Eclipse Plug-In

星期五, 九月 3rd, 2010點閱人數:0次

在伊莉看到有人在問這個外掛的用法,很好奇查了一下http://fjep.sourceforge.net/,原來這是一個Eclipse的外掛用來將Java的專案佈署成一個可執行的jar檔,這個外掛在Eclipse 3.4版的時候已整合到Eclipse了!

ㄚ琪在一些文章裡,也提到佈署的應用程式,像是免費的Java編譯器、組譯器跟Java Development Kits (JDK)傳播Python應用程式等都有提到,沒想到常用的Eclipse的匯出(Export)就有這個功能了,真是太cool!

稍微show一下圖解試作的情形!我將一隻使用jxl.jar來處理Excel的讀寫程式,試著做看看!

先在專案上按Export

2010-09-02_164834

選擇Runnable JAR file之後,定一些規格,ReadingExcel是我的java檔,MyExcel是我的project,text.jar事我要產生的測試檔!

2010-09-02_165038

2010-09-02_165100

好像有一些警告發生,我沒有理會,繼續按OK!

2010-09-02_165128

後來還是有警告,照樣不理會,按OK!

產生了一個test.jar,直接點擊就可以使用,太好了!

java for GPS

星期四, 九月 2nd, 2010點閱人數:1次

今天在伊莉看到有人在求問可以讀取GPS接收器的訊號(NMEA)的JAVA程式,剛好看到陳鍾誠的網站上有一篇如何以 Java 取得衛星定位資訊 ?,我覺得重點是這個gps.zip,它包了javax.comm 這個不在標準 JDK 中的函式庫,你要先這樣安裝:

* 將 win32com.dll 檔案複製到 {JDK}\bin 的目錄下。
* 將 javax.comm.properties 檔案複製到 {JDK}\lib 的目錄下。

這樣編譯執行:

javac -classpath comm.jar;. Gps.java
java -classpath comm.jar;. Gps COM4

程式碼是這樣的:

import java.io.*;
import javax.comm.*;

public class Gps {
  public static void main( String[] args) throws Exception {
     receive(args[0]);    // 接收來自指定的 COM port 的衛星訊號。
  }

  // 以下是衛星接收的主要程式。
  public static void receive(String port) throws Exception {
    // 開啟 COM port (在 Java 中稱為 Serial Port)。
    SerialPort serialPort = ( SerialPort ) CommPortIdentifier.getPortIdentifier( port ).open( "GPS", 60 );
    // 設定接收參數,包含頻率為 4800bps, 8個資料位元後接著一個停止位元,沒有同位位元(parity bit)等。
    serialPort.setSerialPortParams( 4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE );
    // 將該 Serial Port 當成檔案一樣開啟,然後不斷讀取即可。
    BufferedReader in = new BufferedReader( new InputStreamReader(serialPort.getInputStream()) );
    while (true ) {
      String msg = in.readLine();
      System.out.println(msg);
    }
  }
}

太好用了,存起來一定會用到的!

Android Change TextView String Color

星期三, 九月 1st, 2010點閱人數:4次

今天終於可以看Google Android SDK 開發範例大全 2這本書的03-03的變更TextView文字顏色 – 引用Drawable顏色常數及背景色這節了,你可以在http://book.51cto.com/art/200907/140343.htm看到簡體版的文章!

這一節提到了幾個新的方法:

public View findViewById (int id),Finds a view that was identified by the id attribute from the XML that was processed in onCreate(Bundle). Returns The view if found or null otherwise.

一開始乍看之下,會覺得課本的TextView跟View很類似,你繼續查看View的連結可以知道TextView繼承自View,基本上從Java來看,貓繼承自動物,如果本來要傳回的動物型別的話,現在改成貓的型別,似乎應該是要有點問題才對,但是好像很多資料敘述好像都沒關係,那我們就繼續看看情形吧!

getBaseContext()是ContextWrapper的一個方法,它會傳回the base context as set by the constructor or setBaseContext,但是我查不到更詳盡的資訊,ContextWrapper大概是『Proxying implementation of Context that simply delegates all of its calls to another Context. Can be subclassed to modify behavior without changing the original Context.』。有些可能搞不太懂得就繼續放著吧,看看以後會不會比較懂。

讀Google!Android 2手機應用程式設計入門第三版(附光碟)

星期三, 八月 11th, 2010點閱人數:52次

這一本Google!Android 2手機應用程式設計入門第三版(附光碟)是最近在讀的一本Android的書,內容更新的滿快的,而且當我讀到6-1 建立新程式專案的時候,2010-08-11_085200

這裡有關Properties屬性的介紹,我感覺是我看到的介紹最詳細的:

名稱 描述
Project Name 這個專案所在的資料夾名稱
Application Name 應用程式顯示在螢幕上的標題
Package Name 套件(Package)名稱。JAVA的習慣是用套件名稱來區分不同的類別(class)。依照專案的不同,我們會取不同的路徑名稱。
Create Activity 是否建立這個項目的主要類別。勾選後可以指定這個類別的名稱。這個類別是一個「Activity」類別的子類別。
我們可以在「Activity」中啟動程式和控制程式流程,或是根據需要控制螢幕、介面。
Build Target 選擇用來編譯專案的SDK配置。當選定了Build Target後,開發工具會在Min SDK Version欄位中自動填入對應的值。Min SDK Version本應用程式所支援的最低SDK版本代號。

6-2的程式專案架構,也跟我使用最新的Android 2.2很近似,所以操作上應該不會有問題!

Android AbsoluteLayout is deprecated

星期一, 七月 19th, 2010點閱人數:68次

ㄚ琪從2010/05/20看Google Android SDK 開發範例大全 2這本書從ex03_01看到ex03_02變更手機視窗畫面底色 — draeable定義顏色常數的方法這節及範例,看了快兩個月了,夠誇張吧!主因是課本的版本雖然已經是最新了,但是還是不敵經常更新的Android SDK 2.2 Api level:8,這個我正在用的版本,你用這個SDK版本去編譯ex03_02絕對會產生錯誤,而我又不太喜歡看全英文的Android手冊,內容多到我看了想吐,所以我就一直用試誤法在測試!

第一次的時候我使用eclipse系統預設的程式,稍加改變,因為AbsoluteLayout已經停用了,所以預設的程式會改用LinearLayout,那就請大家看看畫面吧!

2010-07-19_102244

因為課本是用layout_x跟layout_y去定位置的,所以這四個物件的寫作順序不會有什麼關係,但是改成LinearLayout之後,嘿嘿!版面就不鳥你了,稍加變動程式碼順序:

2010-07-19_102503

版面好看多了,但是,「這不是我要的的肯德基啊!」,好了課本是帳號輸入欄位同一列的,怎麼做啊!ㄚ琪仰賴Google了,看了很多範例,終於回到Android的手冊頁的範例,Hello, LinearLayout,裡頭連用了很多的LinearLayout的容器,看來只用一個AbsoluteLayout容器就解決的版面,那個時代將不復見,取而代之的是這麼複雜的main.xml檔:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:background=”@drawable/white”
>
<LinearLayout
android:orientation=”horizontal”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:layout_weight=”1″>
<TextView
android:id=”@+id/widget28″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/str_id”
android:textColor=”@drawable/darkgray”

>
</TextView>
<EditText
android:id=”@+id/widget31″
android:layout_width=”200px”
android:layout_height=”wrap_content”
android:textSize=”18sp”

>
</EditText>
</LinearLayout>

<LinearLayout
android:orientation=”horizontal”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:layout_weight=”1″>
<TextView
android:id=”@+id/widget29″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/str_pwd”
android:textColor=”@drawable/darkgray”

>
</TextView>

<EditText
android:id=”@+id/widget30″
android:layout_width=”200px”
android:layout_height=”wrap_content”
android:textSize=”18sp”
android:password=”true”

>
</EditText>
</LinearLayout>
</LinearLayout>

這個程式碼沒經過什麼修飾,但是畫面是很好看的喔!

2010-07-19_143315

所以經過巧妙地重複應用LinearLayout,可以做很棒的版面Layout,ㄚ琪終於可以繼續ex03_03了!

Android應用程式架構

星期一, 六月 14th, 2010點閱人數:67次

2010-06-14_101926

這個架構跟課本Google Android SDK 開發範例大全 2有些許不同,但是應該不影響程式的開發!

2010-06-14_112542

程式碼可以自動插入的,除了可以填覆寫的Override/Implement Methods外,也新增了很多的自動插入,像是Generate Getters and Setters…、Generate Delegate Methods…等等。

Android SDK and AVD Manager更新故障

星期四, 五月 27th, 2010點閱人數:155次

在繼續讀Google Android SDK 開發範例大全 2(附光碟)的時候,開始之前就是要安裝Android SDK語ADT/DDMS,之前ㄚ琪安裝的是android-sdk-windows-1.5_r2這個版本,看來有段期間沒有用,就會改變很多,現在要安裝SDK好像都是用網路更新的方式了,所以要改新的android-sdk_r05-windows的來安裝,這個r05還是昨天裝的,到了今天又重啟一次SDK Setup.exe,發現又有更新了,這次更新就不好玩了!

2010-05-27_092726

竟然無法更新,說是資料夾無法變更名稱或是移除,原因是有程式在使用該資料夾或是防毒軟體的關係,見鬼了,有程式在使用該資料夾,不就SDK Setup.exe它自己?我用Google搜尋後,確實有人說把防毒軟體關掉就可以更新了!嘔!雖說Google是滿安全的公司,但難保我的電腦跟網路是安全的吧!況且在公司裡面是不能關掉的,要密碼!!但是有個人說將資料夾名稱改掉就可以更新,我不之是怎麼改的?所以我重新下了一個android-sdk_r06-windows的壓縮檔,然後重新啟動SDK Setup.exe來更新就可以了!

另外一個詭異的地方是:

2010-05-27_094909

android-sdk-windows這個資料夾一直都是唯讀的,不管我怎樣取消都沒有?我懷疑可能是這樣所以無法更新,不過我不想繼續深究下去,希望Google可以在下次更新的時候解決這個問題,不然我還是得手動下載!

繼續再來談談,Eclipse的外掛ADT(Android Development Tools)的更新,這沒什麼問題,請參考課本的說明,我這邊show兩張較新的圖:

2010-05-27_135319

長相有點奇怪,重新更新ADT,如下:

2010-05-27_143422

這看起來正確多了,然後就可以開發第一支程式了!

Java 處理異常的問題

星期三, 五月 26th, 2010點閱人數:25次

Given:
2. class MyException extends Exception { }
3. class Tire {
4. void doStuff() { }
5. }
6. public class Retread extends Tire {
7. public static void main(String[] args) {
8. new Retread().doStuff();
9. }
10. // insert code here
11. System.out.println(7/0);
12. }
13. }

I. void doStuff() {
II. void doStuff() throws MyException {
III. void doStuff() throws RuntimeException {
IV. void doStuff() throws ArithmeticException {
When fragments I – IV are added, independently, at line 10, which are true? (Choose all that apply.)
A. None will compile
B. They will all compile
C. Some, but not all, will compile
D. All of those that compile will throw an exception at runtime
E. None of those that compile will throw an exception at runtime
F. Only some of those that compile will throw an exception at runtime
答案:
C and D are correct. An overriding method cannot throw checked exceptions that are
broader than those thrown by the overridden method. However an overriding method can
throw RuntimeExceptions not thrown by the overridden method.
A, B, E, and F are incorrect based on the above. (Objective 2.4)

我覺得D這個答案很詭異,我自己選F,最主要是II的狀況會有編譯錯誤的問題,在Eclipse 3.5下會有錯誤?

很奇怪!

年輕的開發人員Java學習路徑

星期三, 四月 21st, 2010點閱人數:165次

這一篇Dana NourieYoung Developer Learning Path,應該是Java網站文章入門的第一篇文章吧!翻了很多的Java書了,除了較少實作外,真的感覺對Java 語法滿熟的了,想想還能再學點什麼?就找到了這一篇,另外也Google到兩篇簡體翻譯,一篇是李牧原的,一篇是張帆的,今天就讓ㄚ琪整合一下簡體文來生出繁體的吧!

學習JAVA平台是一種冒險經歷,利用JAVA技術,你可以做很多事情,到現在為止,弄清楚你想做什麼、從哪兒開始,是你要越過的第一道障礙。這篇文章介紹了一些你可以用來學習JAVA程式設計的工具。你可以根據你目前所知的來決定你從哪個工具開始。在讀完這篇文章之後,你會認識到學這門技術的辦法和 JAVA程式語言的細節。


圖一 Greenfoot 月球登陸器引用自Sun

學習JAVA平台的冒險經歷將會很有趣,很易懂,很令人興奮。從下面列出的工具中的開始,以你的方式進入下一個工具,包括你覺得準備好的資源。在你瞭解它之前,你將能寫出令人興奮的JAVA程式了。

在你開始之前

在你閱讀工具跟資源之前,你需要Java Standard Edition (Java SE)作為下面的工具需求。

下載 Java SE

一旦Java SE安裝在你的電腦上,你就準備可以考慮不同的教學工具。

工具一覽

使用哪一個工具是根據你目前對程式語言的瞭解,尤其是Java的程式語言,所有這裡面列出的工具是用來給程式設計師可視化的一種體驗,而非一堆令人困惑的程式碼,這些工具展現了物件(你會在工具裡學到這些物件)、這些物件如何相互作用之間的關係,然而,記住每個工具的設計給特定的觀眾。

如果你沒有程式設計的經驗,那就可以以下面的步驟一步步來學:Greenfoot > BlueJ >NetBeans IDE BlueJ版(如圖二所示):


然而大部分的人應該都已經懂了一些程式設計,或是一點點的其他程式語言,或許你上過了一兩堂課但須要之到的更多,基於此下面每樣工具的敘述會幫助你決定哪個工具對你會比較好。

學習工具

每個工具會幫助你想像你寫的程式會發生什麼事,它們幫你看見物件及其相互作用,這樣你較能瞭解這些抽象概念,所有這些工具傾向以輕鬆明瞭的方式幫助你學習Java程式語言。

Greenfoot [下載]

Greenfoot是針對高中生用的,但不意味著年紀較小或較老的就不能從中獲益,基本上Greenfoot是針對學校程度的程式設計,這個強調可以很快地在螢幕上發現刺激跟有趣的事,它讓那些想看看程式設計像什麼的人來說是很容易的切入點,這對事先對程式設計沒有很多興趣的人來說是恨棒的,Greenfoot很有趣,很刺激,並且因為它專門用來建構二維圖形的應用程式而產生興趣,這使你建構視覺化的東西很有趣,這是為了吸引你進入程式設計的領域,一旦你上鉤,你就可以畢業進到BlueJ,之後再進到NetBeans IDE BlueJ版本。

下載快速簡介教學

BlueJ [下載]

BlueJ的目的是增加在介紹大學的水平,它假定你知道你是對學習程式語言有興趣的,而且你想要用有組織的方式來學,BlueJ是通用的,它可以用來開發任何種類的應用程式,BlueJ教授基礎的物件方法欄位,以及他可以視覺化地顯示你所建構的每件東西的關係, 你可以學到Java程式語言的基本要點,也可以看看有什麼事會發生,特別強調的是在視覺化跟相互作用的技術,這個技術用來建構高度互動的環境來鼓勵試驗及探索。

BlueJ 支援:

RingsDataListIcon.gif

完全整合的環境

RingsDataListIcon.gif

類別結構的圖形顯示

RingsDataListIcon.gif

圖形和文字編輯

RingsDataListIcon.gif

內建編輯器、編譯器、虛擬引擎、除錯器等等。

RingsDataListIcon.gif

初學者容易使用的介面

RingsDataListIcon.gif

互動式物件建構

RingsDataListIcon.gif

互動式物件呼叫

RingsDataListIcon.gif

互動式測試

RingsDataListIcon.gif

增量應用程式開發

下載 BlueJ教學

NetBeans IDE BlueJ版本 [下載]

BlueJ是一個特別針對初學的程式設計師使用的環境,它提供了教育工具,像是視覺化及互動設施來大大幫助物件導向概念的學習,儘管BlueJ包括了學習程式的入門階段,但是NetBeans提供給專業的開發人員更強大的工具,對學生來說這個不可豁免的從一個階段進到另一個階段是一個難以阻擋的步驟-直到現在。

這個工具提供了學生無縫的升級路徑以支援教育工具切換到全功能的專業IDE,BlueJ外掛新增了兩個顯著的特點在NetBeans IDE裡:

  • 它允許NetBeans用BlueJ-原生格式來開啟、工作及建構BlueJ專案(不需要在NetBeans IDE的標準專案間互轉),所以你可以用NetBeans IDE做一些事,然後一些在BlueJ上做,只要你覺得工作舒服就可以。
  • 它新增了BlueJ視圖標籤到NetBeans專案視窗裡,可以讓你的BlueJ專案有熟悉的試圖。

下載 Netbeans BlueJ外掛教學

  • Dana Nourie寫的一篇額外的教學
  • 來自Sun Developer Network關於NetBeans/BlueJ的視訊
  • 一些實驗室筆記幫助從BlueJ轉移到NetBeans的過渡期,並且展現一些NetBeans IDE提供給程式設計師的設施。
  • 假如你真的想要看看你可以用Zuul-for-NetBeans專案多遠,試試Brian Leonard的Zuul everywhere 傑出教學。
  • 學習Java程式語言的教學

一旦你開始使用BlueJ或NetBeans BlueJ版本,你也需要學習基本的Java程式語言,你最好的資源就是The Java Tutorial,不要讓這些線上教學擊敗你,透過你使用的工具當你作專案的時候慢慢地學習,Java教學教授Java程式語言的語法以及對你有用的數以千計的類別

New to Java Programming Center這個網址加入我的最愛或書籤,張貼在這中心的文章及教學的目的為正在學習的開發者,並且這裡的文章時常更新,語言的層級從初階到中階,網站的Learning標籤也有一系列的文章級教學讓你在學習路徑的開始很有幫助。

另外,也可以透過方便的RSS訊息來源訂閱Java Technology Fundamentals部落格,文章針對初階到中階的程式設計師每月會饋送訊息來源數次,裡頭有些文章被張貼在java.sun.com、有些是來自Java Tutorial李的教學,還有些是Java Technology FundamentalsNew to Java Programming Center基於特別目的寫的,所有的資料都可以幫你學習Java的平台。

假如你有一個非死不可(Facebook)的帳號,確認成為Getting Started with Java Programming頁的粉絲然後經常地拜訪,這新的內容會透過RSS訊息來源自動地新增。(註:找不到這個粉絲專頁)

當你的程式設計技巧更加地中級的時候,也可以開始考慮訂閱Core Tech Tips,就像Java Technology FundamentalsCore Tech Tips也是每個月更新數次,但是這些程式設計技巧目標對象在中階跟進階的Java開發人員。

總結

選擇你的學習工具,使用這些資源,開始設計程式,並且玩得開心一點!

註:ㄚ琪學Java沒有從這裡開始,就直接買一些書來K了,現在發現這個資源好像很好用,好吧,就繼續學吧!

argument vs parameter 的翻譯

星期三, 三月 31st, 2010點閱人數:70次

常常在一些程式設計的原文書中看到這兩個字吧,我是常看到,可是有時翻譯的時候,都不太懂該怎麼翻譯較妥?

在這一本很多人推薦要考SCJP必讀的書籍SCJP Java 6專業認證手冊中,我幾乎看到了一線曙光!

在p.46這樣寫:『

arguments:The things you specify between the parentheses when you’re invoking a method:
doStuff(“a”, 2); // invoking doStuff, so a & 2 are arguments
parameters: The things in the method’s signature that indicate what the method must receive when it’s invoked:
void doStuff(String s, int a) { } // we’re expecting two
// parameters: String and int

中文這樣寫:『

引數(arguments):當你呼叫函式的時候,你可以放在括號內的東西:
參數(parameters):放在函式的標記式(method’s signature)的東西,用來說明這個函式,當它被呼叫時必須接收到甚模樣的資料:

引數 vs  參數 在這裡這樣寫就有點懂了!