你我的生活周遭已處處可見Java;到火星上走走eBay大采購網絡銀行轉帳拿著健保卡到醫院看病無聊時把玩手機上的Java游戲…
在生活中你通常只知道「喔!原來這網站是用Java寫的」「喔!原來這是手機的Java Game」若自技術層次拆解Java Technology可簡單區分為Java 程序語言(language)與Java 平台(platform)
Java 程序語言所指是撰寫程序所需的語法與詞匯像學習中英文有一套基本的單字與語法只要利用單字組出符合語法的句子這就是Java程序的基礎
至於Java 平台如大家熟知的Java共分三大平台JMEJSE和JEE分別專精於嵌入式行動平台標准平台和企業應用平台除了共同的類別函式庫(API)之外每個平台也有其特定的API供程序設計師們開發使用
隨著開發工具陸續推出降低了Java開發技術門坎要寫出正確無誤的Java程序不是太難的事情但論及系統性的Java軟件開發那可就不是一件輕松事
開發大型項目有三項非常重要的因素將會影響整個項目的進度與質量分別是人(people)流程(process)與技術(technology)
這三個要素是環環相扣的任何一項要素的成敗都會影響另外兩個要素而每個要素也都足以影響一個項目的成敗
如何取得這三者的平衡並將每個要素充份的發揮取決於管理者的經驗與相關開發人員的素質這不是一項簡單容易的任務但有好的方法可以完成
Java彈性多選擇資源豐富任君挑選
「技術」應該是最容易掌握的部份因為你選擇了Java如前所述全世界已有許多Java資源可以選擇某些人可能會認為Java技術門坎高考慮訓練成本而決定導入較為簡易的程序語言如VBNet或是不敢轉換到Java平台
事實上真正困難的不是Java程序語言或是API的使用而是整個對象導向程序設計的概念C#也標榜與Java有著類似的對象導向架構除執行平台不同API的名稱不同本質與Java可以算是孿生兄妹怎麼沒聽有人抱怨C#很難學?
既然JavaNet門坎是一樣的那該如何選擇?答案是你喜歡誰就選誰只是當你決定投靠其中一個陣營時不妨想想一件事「在這個平台上我是不是有選擇的空間與自由?」
Java是一開放的技術平台可執行於各類作業平台還有各式各樣的開發工具API套件與執行環境包括商業免費開放源碼等豐富資源任君挑選
流程關乎項目預算與時間控制
「程序」指的是軟件開發流程或是項目流程定義流程的目的是要掌控所有的情況項目的最大敵人是時間及預算這兩者都是有限的如何在有限預算內准時完成項目可說是一項藝術
幸運的是時間和預算都是可控制的並不是指我們可以控制時間快慢或長短而是如何明確知道哪一個時間點需要何種產出物而我們有多少的預算可以完成為有效控制我們需要一個標准的流程只要照著規矩走一切都好辦
RUP(Rational Unified Process)就是一種業界常用的不成文規矩在多數軟件項目中幾乎都會使用的一項語言方法與工具 RUP的精神在於反復(iterative)與漸近的(incremental)
在漸進式的開發過程中透過不斷的提煉(refine)可趁早發現問題且找出解決方法也確保每一工作項目的進度不過在架構(Architecture)方面RUP確實著墨較少而架構優劣也是足以影響軟件系統成敗的關鍵因素
QoS(Quality of Service)或是SLR(Service Level Requirement)我想是每個系統最基本的要求它包含可用性(Availability)可管理(Manageability)可信賴(Reliability)可擴充(Scalability)和安全性(Security)等條件
當系統架構進行規劃時就應同步考慮這幾項條件舉例而言先前某家外商銀行因系統設計不良而導致外人可輕易猜出參數設定的方式直接入侵系統竊取消費者隱私數據;也有某家電信業者為沒考慮系統的負載量而導致在耶誕跨年等重要節日時湧入大量簡訊的尖峰時期造成服務塞車系統當機
在電視新聞中我們常常可見類似的新聞報導而背後隱藏的意義是「當初沒做好系統架構規劃」看得不夠遠想得不夠深等系統開發到一半或是系統上線後才發現問題此時再東補西補為時已晚
雖說不同的程序技術皆有其滿足QoS的方法相較之下Java對上述五大項功能的支持應該算是最為豐富如在JEE的設計模式(Design Pattern)中幾乎都是為解決此幾項問題而設計之後再配合程序語言本身的強固性開發而成的企業級應用系統我想應可滿足客戶對於QoS的嚴格要求
話說回頭企業一旦使用Java開發一套系統就一定會是百分百穩定且滿足QoS嗎?我想設計模式跟程序語言無關將JEE 設計模式作為C#實作的架構也未嘗不可只要能建構出相同安全穩定的環境執行該系統都是可行的就像會說國語未必可寫出漂亮的文章一樣訓練經驗再加上一點天份才是最重要的
專業技術認證可供參考
「人」是項目中最難預料與掌控的一項要素人可分成兩部份一是客戶二是研發人員客戶是最難掌握的不同的客戶有不同的個性沒有任何人能教導你如何應付不同的客戶除了靠運氣還要靠經驗
暫不談客戶先看研發人員這部分我想要滿足技術與流程兩項因素關鍵都是人如何選擇對且合適的技術要有專業人才;如何有效管理流程?如何規劃滿足AMRSS五項需求的系統架構?這都是需要有經驗的管理人才及架構師(architect)當然能不能寫出漂亮且可完善運作的程序代碼也是需要有一定水平的研發人員
開發程序人員的水平是較容易被認證Java有幾項專業認證如SCJPSCJDSCWCD都可用以鑒定開發人員基本的功力另有SCEA SCBCD等認證可評鑒程序架構人員的素質除專業訓練之外經驗也是一位優秀的架構師所應具備的條件而程序部份其實也有認證如PMP
也許你會覺得Java很八股寫程序為什麼需要一大堆文件設計模式程序與方法論(methodology)邊寫邊設計且戰且走不行嗎?對於小型系統或是沒有營運壓力系統而言是可以的如果是人力不足預算有限結案期限已在眼前當然也該直接動工
但依我接觸過案子經驗的深刻體驗寧願花費較長時間與心力在項目初期就先詳細規劃才可節省後期開發的時間系統上線後也更容易維護與擴充雖然耕耘過程會較辛苦但所得好處也會是倍增的
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25346.html