
Java Java,是由Sun Microsystems公司于1995年5月推出的Java程式設計語言和Java平台的總稱。用Java實作的HotJava浏覽器(支援Java applet)顯示了Java的魅力:跨平台、動态的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發展,常用的浏覽器現在均支援Java applet。
Java平台由Java 虛拟機(Java Virtual Machine)和Java 應用程式設計接口(Application Programming Interface、簡稱API)構成。Java 應用 程式設計接口為Java應用提供了一個獨立于 作業系統的标準接口,可分為基本部分和擴充部分。在硬體或作業系統平台上安裝一個Java平台之後,Java應用程式就可運作。現在Java平台已經嵌入了幾乎所有的作業系統。這樣Java程式可以隻編譯一次,就可以在各種系統中運作。Java應用程式設計接口已經從1.1x版發展到1.2版。目前常用的Java平台基于Java1.5,最近版本為Java1.7。
Java分為三個體系JavaSE(Java2 Platform Standard Edition,java平台标準版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企業版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
* Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的 Java 應用程式。Java SE 包含了支援 Java Web 服務開發的類,并為 Java Platform,Enterprise Edition(Java EE)提供基礎。
* Java EE(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端 Java 應用程式。Java EE 是在 Java SE 的基礎上建構的,它提供 Web 服務、元件模型、管理和通信 API,可以用來實作企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web 2.0 應用程式。
* Java ME(Java Platform,Micro Edition)。這個版本以前稱為 J2ME。Java ME 為在移動裝置和嵌入式裝置(比如手機、PDA、電視機頂盒和列印機)上運作的應用程式提供一個健壯且靈活的環境。Java ME 包括靈活的使用者界面、健壯的安全模型、許多内置的網絡協定以及對可以動态下載下傳的連網和離線應用程式的豐富支援。基于 Java ME 規範的應用程式隻需編寫一次,就可以用于許多裝置,而且可以利用每個裝置的本機功能。
2009年04月20日,oracle(甲骨文)宣布收購sun。
1991年,Sun公司的James Gosling。Bill Joe等人,為電視、控制烤面包機等家用電器的互動操作開發了一個Oak(一種橡樹的名字)軟體,他是Java的前身。當時,Oak并沒有引起人們的注意,直到1994年,随着網際網路和3W的飛速發展,他們用Java編制了HotJava浏覽器,得到了Sun公司首席執行官Scott McNealy的支援,得以研發和發展。為了促銷和法律的原因,1995年Oak更名為Java。Java的得名還有段小插曲呢,一天,Java小組成員正在喝咖啡時,議論給新語言起個什麼名字的問題,有人提議用Java(Java是印度尼西亞盛産咖啡的一個島嶼),這個提議得到了其他成員的贊同,于是就采用Java來命名此新語言。很快Java被工業界認可,許多大公司如IBM Microsoft.DEC等購買了Java的使用權,并被美國雜志PC Magazine評為1995年十大優秀科技産品。從此,開始了Java應用的新篇章。
Java的誕生是對傳統計算機模式的挑戰,對計算機軟體開發和軟體産業都産生了深遠的影響:
(1)軟體4A目标要求軟體能達到任何人在任何地方在任何時間對任何電子裝置都能應用。這樣能滿足軟體平台上互相操作,具有可伸縮性和重用性并可即插即用等分布式計算模式的需求。
(2)基于建構開發方法的崛起,引出了CORBA國際标準軟體體系結構和多層應用體系架構。在此基礎上形成了Java.2平台和 .NET平台兩大派系,推動了整個IT業的發展。
(3)對軟體産業和工業企業都産生了深遠的影響,軟體從以開發為中心轉到了以服務為中心。中間提供商,構件提供商,伺服器軟體以及咨詢服務商出現。企業必須重塑自我,B2B的電子商務将帶動整個新經濟市場,使企業獲得新的價值,新的增長,新的商機,新的管理。
(4)對軟體開發帶來了新的革命,重視使用第三方構件內建,利用平台的基礎設施服務,實作開發各個階段的重要技術,重視開發團隊的組織和文化理念,協作,創作,責任,誠信是人才的基本素質。
總之,目前以看到了Java對資訊時代的重要性,未來還會不斷發展,Java在應用方面将會有更廣闊的前景。
JAVA-名字起源
Java自1995誕生,至今已經15年曆史。Java的名字的來源:Java是印度尼西亞爪哇島的英文名稱,因盛産咖啡而聞名。Java語言中的許多庫類名稱,多與咖啡有關,如JavaBeans(咖啡豆)、NetBeans(網絡豆)以及ObjectBeans (對象豆)等等。SUN和JAVA的辨別也正是一杯正冒着熱氣的咖啡。
據James Gosling回憶,最初這個為TV機頂盒所設計的語言在Sun内部一直稱為Green項目。我們的新語言需要一個名字。Gosling注意到自己辦公室外一棵茂密的橡樹Oak,這是一種在矽谷很常見的樹。是以他将這個新語言命名為Oak。但Oak是另外一個注冊公司的名字。這個名字不可能再用了。
在命名征集會上,大家提出了很多名字。最後按大家的評選次序,将十幾個名字排列成表,上報給商标律師。排在第一位的是Silk(絲綢)。盡管大家都喜歡這個名字,但遭到James Gosling的堅決反對。排在第二和第三的都沒有通過律師這一關。隻有排在第四位的名字、得到了所有人的認可和律師的通過,這個名字就是Java。
10多年來,Java就像爪哇咖啡一樣譽滿全球,成為實至名歸的企業級應用平台的霸主。而Java語言也如同咖啡一般醇香動人。
Java語言特點
Java是一種簡單的,面向對象的,分布式的,解釋型的,健壯安全的,結構中立的,可移植的,性能優異、 多線程的動态語言。
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最早誕生于1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子産品而設計的一個通用環境。他們最初的目的隻是為了開發一種獨立于平台的軟體技術,而且在網絡出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網絡的出現改變了OAK的命運。
在Java出現以前,Internet上的資訊内容都是一些乏味死闆的HTML文檔。這對于那些迷戀于WEB浏覽的人們來說簡直不可容忍。他們迫切希望能在WEB中看到一些互動式的内容,開發人員也極希望能夠在WEB上建立一類無需考慮軟硬體平台就可以執行的應用程式,當然這些程式還要有極大的安全保障。對于使用者的這種要求,傳統的程式設計語言顯得無能為力。SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始将OAK技術應用于WEB上,并且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都心生感歎:噢,這正是我想要的!于是Java成了一顆耀眼的明星,醜小鴨一下子變成了白天鵝。
Java主要特性
1、Java語言是簡單的。Java語言的文法與C語言和C++語言很接近,使得大多數程式員很容易學習和使用Java。另一方面,Java丢棄了C++ 中很少使用的、很難了解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特别地,Java語言不使用指針,并提供了自動的廢料收集,使得程式員不必為記憶體管理而擔憂。
2 、Java語言是一個面向對象的。Java語言提供類、接口和繼承等原語,為了簡單起見,隻支援類之間的單繼承,但支援接口之間的多繼承,并支援類與接口之間的實作機制( 關鍵字為implements)。Java語言全面支援動态綁定,而C++ 語言隻對虛函數使用動态綁定。總之,Java語言是一個純的面向對象程式設計語言。
3、Java語言是分布式的。Java語言支援Internet應用的開發,在基本的Java應用程式設計接口中有一個網絡應用程式設計接口( java.net),它提供了用于網絡應用程式設計的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠端方法激活)機制也是開發分布式應用的重要手段。
4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程式健壯性的重要保證。對指針的丢棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
5、Java語言是安全的。Java通常被用在網絡環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載下傳的類具有一個安全防範機制(類ClassLoader),如配置設定不同的名字空間以防替代本地的同名類、位元組代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設定安全哨兵。
6、Java語言是體系結構中立的。Java程式(字尾為java的檔案)在Java平台上被編譯為體系結構中立的 位元組碼格式(字尾為class的檔案), 然後可以在實作這個Java平台的任何系統中運作。這種途徑适合于異構的網絡環境和軟體的分發。
7、Java語言是可移植的。這種可移植性來源于體系結構中立性,另外,Java還嚴格規定了各個基本資料類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實作的,Java的運作環境是用ANSI C實作的。
8、Java語言是解釋型的。如前所述,Java程式在Java平台上被編譯為位元組碼格式, 然後可以在實作這個Java平台的任何系統中運作。在運作時,Java平台中的Java 解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運作環境中。
9、Java是高性能的。與那些解釋型的進階腳本語言相比,Java的确是高性能的。事實上,Java的運作速度随着JIT(Just-In-Time)編譯器技術的發展越來越接近于C++。
10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來建立。通常有兩種方法來建立線程:其一,使用型構為Thread(Runnable) 的構造子将一個實作了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類建立的對象即為線程。值得注意的是Thread類已經實作了Runnable接口,是以,任何一個線程均有它的run方法,而run方法中包含了線程所要運作的代碼。線程的活動由一組方法來控制。 Java語言支援多個線程的同時執行,并提供多線程之間的同步機制(關鍵字為synchronized)。
11、Java語言是動态的。Java語言的設計目标之一是适應于動态變化的環境。Java程式需要的類能夠動态地被載入到運作環境,也可以通過網絡來載入所需要的類。這也有利于軟體的更新。另外,Java中的類有一個運作時刻的表示,能進行運作時刻的類型檢查。
Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支援和Java平台内嵌的API能縮短應用系統的開發時間并降低成本。Java的編譯一次,到處可運作的特性使得它能夠提供一個随處可用的開放結構和在多平台之間傳遞資訊的低成本方式。特别是Java企業應用程式設計接口(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。
Java相關技術
1、 JDBC(Java Database Connectivity)提供連接配接各種關系資料庫的統一接口,可以為多種關系資料庫提供統一通路,它由一組用Java語言編寫的類和接口組成。JDBC為工具/資料庫開發人員提供了一個标準的API,據此可以建構更進階的工具和接口,使資料庫開發人員能夠用純 Java API 編寫資料庫應用程式,同時,JDBC也是個商标名。
2、 EJB(Enterprise JavaBeans)使得開發者友善地建立、部署和管理跨平台的基于元件的企業應用。
3、Java RMI(Java Remote Method Invocation)用來開發分布式Java應用程式。一個Java對象的方法能被遠端Java虛拟機調用。這樣,遠端方法激活可以發生在對等的兩端,也可以發生在用戶端和伺服器之間,隻要雙方的應用程式都是用Java寫的。
4、Java IDL(Java Interface Definition Language) 提供與CORBA(Common Object Request Broker Architecture)的無縫的互操作性。這使得Java能內建異構的商務資訊資源。
5、 JNDI(Java Naming and Directory Interface)提供從Java平台到的統一的無縫的連接配接。這個接口屏蔽了企業網絡所使用的各種命名和目錄服務。
6、JMAPI(Java Management API)為異構網絡上系統、網絡和服務管理的開發提供一整套豐富的對象和方法。
7、 JMS(Java Message Service)提供企業消息服務,如可靠的消息隊列、釋出和訂閱通信、以及有關推拉(Push/Pull)技術的各個方面。
8、 JTS(Java transaction Service)提供存取事務處理資源的開放标準,這些事務處理資源包括事務處理應用程式、事務處理管理及監控。
9、 JMF(Java Media Framework API), 她可以幫助開發者把音頻、視訊和其他一些基于時間的媒體放到Java應用程式或applet小程式中去,為多媒體開發者提供了捕捉、回放、編解碼等工具,是一個彈性的、跨平台的多媒體解決方案。
10、 Annotation(Java Annotation),在已經釋出的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一種機制,将程式的元素如:類,方法,屬性,參數,本地變量,包和中繼資料聯系起來。這樣編譯器可以将中繼資料存儲在Class檔案中。這樣虛拟機和其它對象可以根據這些中繼資料來決定如何使用這些程式元素或改變它們的行為。
在Java技術中,值得關注的還有JavaBeans,它是一個開放的标準的元件體系結構,它獨立于平台,但使用Java語言。一個JavaBean是一個滿足JavaBeans規範的Java類,通常定義了一個現實世界的事物或概念。一個JavaBean的主要特征包括屬性、方法和事件。通常,在一個支援JavaBeans規範的開發環境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可視地操作JavaBean,也可以使用JavaBean構造出新的JavaBean。JavaBean的優勢還在于Java帶來的可移植性。現在,EJB (Enterprise JavaBeans) 将JavaBean概念擴充到Java服務端元件體系結構,這個模型支援多層的分布式對象應用。除了JavaBeans,典型的元件體系結構還有DCOM和CORBA,關于這些元件體系結構的深入讨論超出了本書的範圍。
10、 javaFX Sun剛剛釋出了JavaFX技術的正式版,它使您能利用 JavaFX 程式設計語言開發富網際網路應用程式(RIA)。JavaFX Script程式設計語言(以下稱為JavaFX)是Sun微系統公司開發的一種declarative, staticallytyped(聲明性的、靜态類型)腳本語言。JavaFX技術有着良好的前景,包括可以直接調用Java API的能力。因為 JavaFXScript是靜态類型,它同樣具有結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和釋出單元,這些特性使得使用Java技術建立和管理大型程式變為可能。
java-參見
計算機科學課程清單
JNI(Java Native Interface)Java本地接口。
Java開源項目
Spring Framework 【Java開源 J2EE架構】
Spring 是一個解決了許多在J2EE開發中常見的問題的強大架構。 Spring提供了管理業務對象的一緻方法并且鼓勵了注入對接口程式設計而不是對類程式設計的良好習慣。Spring的架構基礎是基于使用JavaBean屬性的 Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為建構完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了唯一的資料通路抽象,包括簡單和有效率的JDBC架構,極大的改進了效率并且減少了可能的錯誤。Spring的資料通路架構還內建了 Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一緻的程式設計模型。 Spring提供了一個用标準Java語言編寫的AOP架構,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實作你自己的 aspects。這個架構足夠強大,使得應用程式能夠抛開EJB的複雜性,同時享受着和傳統EJB相關的關鍵服務。Spring還提供了可以和IoC容器內建的強大而靈活的MVC Web架構。【SpringIDE:Eclipse平台下一個輔助開發插件】.
WebWork 【Java開源 Web架構】
WebWork 是由OpenSymphony組織開發的,緻力于元件化和代碼重用的拉出式 MVC模式J2EE Web架構。WebWork目前最新版本是2.1,現在的WebWork2.x前身是Rickard Oberg開發的WebWork,但現在WebWork已經被拆分成了Xwork1和WebWork2兩個項目。 Xwork簡潔、靈活功能強大,它是一個标準的Command模式實作,并且完全從web層脫離出來。 Xwork提供了很多核心功能:前端攔截機(interceptor),運作時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,處理HTTP的響應和請求。WebWork2使用ServletDispatcher将HTTP請求的變成 Action(業務層Action類), session(會話)application(應用程式)範圍的映射,request請求參數映射。WebWork2支援多視圖表示,視圖部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了對AJAX的支援,這支援是建構在DWR與Dojo這兩個架構的基礎之上.【EclipseWork:用于WebWork輔助開發的一個Eclipse插件】
Struts 【Java開源 Web架構】
Struts 是一個基于Sun J2EE平台的MVC架構,主要是采用Servlet和JSP技術來實作的。由于Struts能充分滿足應用開發的需求,簡單易用,靈活迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、 自定義标簽和資訊資源(message resources)整合到一個統一的架構中,開發人員利用其進行開發時不用再自己編碼實作全套MVC模式,極大的節省了時間,是以說Struts是一個非常不錯的應用架構。【StrutsIDE:用于Struts輔助開發的一個Eclipse插件】
Hibernate 【Java開源 持久層架構】
Hibernate 是一個開放源代碼的對象關系映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以随心所欲的使用對象程式設計思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。Eclipse平台下的Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】
Quartz 【Java開源 Job排程】
Quartz 是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來建立簡單或為運作十個,百個,甚至是好幾萬個Jobs這樣複雜的日程式表。Jobs可以做成标準的Java元件或 EJBs。Quartz的最新版本為Quartz 1.5.0。
Velocity 【Java開源 模闆引擎】
Velocity 是一個基于java的模闆引擎(template engine)。它允許任何人僅僅簡單的使用模闆語言(template language)來引用由java代碼定義的對象。當Velocity應用于web開發時,界面設計人員可以和java程式開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以隻關注頁面的顯示效果,而由java程式開發人員關注業務邏輯編碼。Velocity将java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它可以從模闆(template)産生SQL和PostScript、XML,它也可以被當作一個獨立工具來産生源代碼和報告,或者作為其他系統的內建元件使用。Velocity也可以為Turbine web開發架構提供模闆服務(template service)。Velocity+Turbine提供一個模闆服務的方式允許一個web應用以一個真正的MVC模型進行開發。 【VeloEclipse :Velocity在Eclipse平台下的一個輔助開發插件】
IBATIS 【Java開源 持久層架構】
使用ibatis 提供的ORM機制,對業務邏輯實作人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實作ORM 而言基本一緻,而對于具體的資料操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的 SQL 語句。相對Hibernate等 “全自動”ORM機制而言,ibatis 以SQL開發的工作量和資料庫移植性上的讓步,為系統設計提供了更大的自由空間。作為“全自動”ORM 實作的一種有益補充,ibatis 的出現顯 得别具意義。
Compiere ERP&CRM 【Java開源 ERP 與CRM系統】
Compiere ERP&CRM為全球範圍内的中小型企業提供綜合型解決方案,覆寫從客戶管理、供應鍊到财務管理的全部領域,支援多組織、多币種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易于安裝、易于實施、易于使用。隻需要短短幾個小時,您就可以使用申購-采購-發票-付款、報價-訂單-發票-收款、産品與定價、資産管理、客戶關系、供應商關系、員工關系、經營業績分析等強大功能了。
Roller Weblogger 【Java開源 Blog部落格】
這個weblogging 設計得比較精巧,源代碼是很好的學習資料。它支援weblogging應有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模闆,RSS syndication,blogroll管理和提供一個 XML-RPC 接口。
Eclipse 【Java開源 開發工具】
Eclipse平台是IBM向開放源碼社群捐贈的開發架構,它之是以出名并不是因為IBM宣稱投入開發的資金總數 —4千萬美元,而是因為如此巨大的投入所帶來的成果:一個成熟的、精心設計的以及可擴充的體系結構。
NetBeans 【Java開源 開發工具】
NetBeans IDE 是一個為軟體開發者提供的自由、開源的內建開發環境。您可以從中獲得您所需要的所有工具,用 Java、C/C++ 甚至是 Ruby 來建立專業的桌面應用程式、企業應用程式、web 和移動應用程式。此 IDE 可以在多種平台上運作,包括 Windows、Linux、Mac OS X 以及 Solaris;它易于安裝且非常友善使用。
XPlanner 【Java開源 項目管理】
XPlanner 一個基于Web的XP團隊計劃和跟蹤工具。XP獨特的開發概念如iteration、user stories等,XPlanner都提供了相對應的的管理工具,XPlanner支援XP開發流程,并解決利用XP思想來開發項目所碰到的問題。 XPlanner特點包括:簡單的模型規劃,虛拟筆記卡(Virtual note cards),iterations、user stories與工作記錄的追蹤,未完成stories将自動疊代,工作時間追蹤,生成團隊效率,個人工時報表,SOAP界面支援。
HSQLDB 【Java開源 DBMS資料庫】
HSQLDB(Hypersonic SQL)是純Java開發的關系型資料庫,并提供JDBC驅動存取資料。支援ANSI-92 标準 SQL文法。而且他占的空間很小。大約隻有160K,擁有快速的資料庫引擎。
Liferay 【Java開源 Portal門戶】
代表了完整的J2EE應用,使用了Web、EJB以及JMS等技術,特别是其前台界面部分使用Struts 架構技術,基于XML的portlet配置檔案可以自由地動态擴充,使用了Web Services來支援一些遠端資訊的擷取,使用 Apahce Lucene實作全文檢索功能。
JetSpeed 【Java開源 Portal門戶】
Jetspeed 是一個開放源代碼的企業資訊門戶(EIP)的實作,使用的技術是Java和XML。使用者可以使用浏覽器,支援WAP協定的手機或者其它的裝置通路Jetspeed架設的資訊門戶擷取資訊。Jetspeed扮演着資訊集中器的角色,它能夠把資訊集中起來并且很容易地提供給使用者。
JOnAS 【Java開源 J2EE伺服器】
JOnAS 是一個開放源代碼的J2EE實作,在ObjectWeb協會中開發。整合了Tomcat或Jetty成為它的Web容器,以確定符合Servlet 2.3和JSP 1.2規範。JOnAS伺服器依賴或實作以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。
JFox3.0 【Java開源 J2EE伺服器】
JFox 是 Open Source Java EE Application Server,緻力于提供輕量級的Java EE應用伺服器,從3.0開始,JFox提供了一個支援子產品化的MVC架構,以簡化EJB以及Web應用的開發! 如果您正在尋找一個簡單、輕量、高效、完善的Java EE開發平台,那麼JFox正是您需要的。
Java IDE
當今最流行的是Eclipse,Myeclipse,Jbuilder2006,Jdeveloper,Netbeans等。
Java圖書
Java語言導學(第4版)
原書名: The Java Tutorial: A Short Course on the Basics, 4th Edition 原出版社: Prentice Hall PTR 作者: (美)Sharon Zakhour Scott Hommel Jacob Royal Isaac Rabinovitch Tom Risser Mark Hoeber 出版社:人民郵電出版社 ISBN:9787115173072
本書是Sun公司指定Java教程的最新版。書中除了講解面向對象的程式設計概念、語言基礎、類和對象、接口和繼承、包、數字和字元串、異常、基本I/O、集合、并發、Swing、把程式打包到JAR檔案中、applet之外,還介紹了Java WebStart、平台環境和正規表達式,同時涵蓋了Java5.0和6.0引入的新特性,比如泛型和并發、注解。附錄B中還給出如何準備Java程式設計語言認證考試方面的内容。此外,本書配套的網上資源還包含本書的示例以及問題和練習的答案、線上Java SE指南、Java SE開發工具包(Java SE DevelopmentKit,JDK)、相應的API規範和指導文檔等。
本書既适合作為高校相關專業Java程式設計語言課程的教材,也适合各種層次的Java程式員閱讀。
Java程式設計思想(第4版)
作 者: (美)埃克爾 著,陳昊鵬 譯
Java程式設計思想(第4版)
出 版 社: 機械工業出版社
出版時間: 2007-6-1 字 數: 版 次: 1 頁 數: 880 印刷時間: 2007/06/01 開 本: 印 次: 紙 張: 膠版紙 I S B N : 9787111213826 包 裝: 平裝
作者簡介
Bruce Eckel是MindView公司的總裁,該公司向客戶提供軟體咨詢和教育訓練。他是C++标準委員會擁有表決權的成員之一,擁有應用實體學學士和計算機工程碩士學位。除本書外,他還是《C++程式設計思想》的作者,并與人合著了《C++程式設計思想 第2卷》(這兩本書的英文影印版及中文版均已由機械工業出版社引進出版)及其他著作。他已經發表了150多篇論文,還經常參加世界各地的研讨會并進行演講。
Java版本曆史
1995年5月23日,Java語言誕生
1996年1月,第一個JDK-JDK1.0誕生
1996年4月,10個最主要的作業系統供應商申明将在其産品中嵌入JAVA技術
1996年9月,約8.3萬個網頁應用了JAVA技術來制作
1997年2月18日,JDK1.1釋出
1997年4月2日,JavaOne會議召開,參與者逾一萬人,創當時全球同類會議規模之紀錄
1997年9月,JavaDeveloperConnection社群成員超過十萬
1998年2月,JDK1.1被下載下傳超過2,000,000次
1998年12月8日,JAVA2企業平台J2EE釋出
1999年6月,SUN公司釋出Java的三個版本:标準版(J2SE)、企業版(J2EE)和微型版(J2ME)
2000年5月8日,JDK1.3釋出
2000年5月29日,JDK1.4釋出
2001年6月5日,NOKIA宣布,到2003年将出售1億部支援Java的手機
2001年9月24日,J2EE1.3釋出
2002年2月26日,J2SE1.4釋出,自此Java的計算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5釋出,成為Java語言發展史上的又一裡程碑。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名,以取消其中的數字“2”:J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME
2006年12月,SUN公司釋出JRE6.0
目前JDK7.0已經在研發中.預計将于2010年9月釋出,屆時将增加簡單閉包功能
Java與Internet
我們知道,早先的 www僅可以傳送文本和圖檔,Java的出現實作了互動的頁面,是一次偉大的 革命。
Java并不是為Internet、www而設計的,它也可以用來編寫獨立的應用程式。Java是一種面向對象語言,Java語言類似于C++語言,是以已熟練掌握C++語言的程式設計人員,再學習Java語言就容易得多!Java程式需要編譯,它被放置在Internet伺服器上,當使用者通路伺服器時,Java程式被下載下傳到本地的使用者機上,由浏覽器解釋運作。實際上有兩種Java程式:一種Java應用程式是一個完整的程式,如Web浏覽器。另一種Java小應用程式是運作于Web浏覽器中的一個程式。
Java程式和它的浏覽器HotJava,提供了可讓你的浏覽器運作程式的方法。你能從你的浏覽器裡直接播放聲音,你還能播放頁面裡的動畫,Java還能告訴你的浏覽器怎樣處理新的類型檔案。當我們能在2400 baud線上傳輸視訊圖象時,HotJava将能顯示這些視訊。
Java與電子商務
電子商務是當今的熱門話題,然而傳統的程式設計語言難以勝任電子商務系統,電子商務要求程式代碼具有基本的要求:安全、可靠、同時要求能與運作于不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網絡程式設計語言中占據無可比拟的優勢,成為實作電子商務系統的首選語言。
Java的八大基本資料類型及其包裝類
原始類型 包裝類 原始類型所占的位元組數
short Short 2個位元組
int Integer 4個位元組
long Long 8個位元組
float Float 4個位元組
double Double 8個位元組
byte Byte 1個位元組
char Character 2個位元組
boolean Boolean 這個視編譯環境而定
第一個JAVA程式HelloWorld
//檔案名 HelloWorld.java
//聲明一個類public class HelloWorld {
//聲明一個方法
public static void main(String args[]){ //程式的入口
//輸出
System.out.println(“hello world!”);
}
}
//例子
package Text;
public class Test{
public static void main(String args[]){
short d = 12; //短整型
System.out.println(d); //輸出d
long c = 144L; //長整型,要加l
System.out.println(c); //輸出c
int z = 15; //整型
System.out.println(z); //輸出z
char e = '我'; //字元型“我”
System.out.println(e);//輸出e
}
}
//無編譯工具 編譯運作java程式
//路徑是相對路徑
編譯java
javac [java源程式名稱.java] //一定要加上字尾名
//這個時候你會發現你的原程式旁邊多了一個.class檔案,檔案名和源檔案名稱相同
//有編譯錯誤會提示
運作java
java [java源程式名稱] //不需要加字尾名,自動運作.class檔案
//顯示程式運作結果
Java新手入門很重要的幾個基本概念
[1] [2] [3] final類:為防止他人從你的類上派生新類,此類是不可擴充的。
動态調用比靜态調用花費的時間要長。
多态類:在java中,對象變量是多态的。而java中不支援多重繼承。
抽象類:規定一個或多個抽象方法的類本身必須定義為abstract。
例: public abstract string getDescripition
Java中的每一個類都是從Object類擴充而來的。
object類中的equal和toString方法。
equal用于測試一個對象是否同另一個對象相等。
toString傳回一個代表該對象的字元串,幾乎每一個類都會重載該方法,以便傳回目前狀态的正确表示。
(toString 方法是一個很重要的方法)
通用程式設計:任何類類型的所有值都可以同object類型的變量來代替。
封裝:就是把資料和行為結合起在一個包中)并對對象使用者隐藏資料的實作過程,一個對象中的資料叫他的執行個體字段(instance field)。
重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載。編譯器必須挑選出調用哪個方法。
數組清單:ArrayList動态數組清單,是一個類庫,定義在java.uitl包中,可自動調節數組的大小。
class類 object類中的getclass方法傳回class類型的一個執行個體,程式啟動時包含在main方法的類會被加載,虛拟機要加載他需要的所有類,每一個加載的類都要加載它需要的類。
就業方向:
可以從事JSP網站開發、Java程式設計、Java遊戲開發、Java桌面程式設計,以及其他與Java語言程式設計相關的工作。可進入電信、銀行、保險專業軟體開發公司等從事軟體設計和開發工作。
Java與C/C++的差異
熟悉C語言和C++語言的讀者一定想搞清楚這個問題,實際上,Java确實是從C語言和C++語言繼承了許多成份,甚至可以将Java看成是類C語言發展和衍生的産物.比如Java語言的變量聲明,操作符形式,參數傳遞,流程控制等方面和C語言,C++語言完全相同.盡管如此,Java和C語言,C++語言又有許多差别,主要表現在如下幾個方面:
(1) Java中對記憶體的配置設定是動态的,它采用面向對象的機制,采用運算符new為每個對象配置設定記憶體空間,而且,實際記憶體還會随程式運作情況而改變.程式運作中,每個, Java系統自動對記憶體進行掃描,對長期不用的空間作為”垃圾”進行收集,使得系統資源得到更充分地利用.按照這種機制,程式員不必關注記憶體管理問題,這使Java程式的編寫變得簡單明了,并且避免了了由于記憶體管理方面的差錯而導緻系統出問題.而C語言通過malloc()和free()這兩個庫函數來分别實作配置設定内在和釋放記憶體空間的,C++語言中則通過運算符new和delete來配置設定和釋放記憶體.在C和C++這仲機制中,程式員必須非常仔細地處理記憶體的使用問題.一方面,如果對己釋放的記憶體再作釋放或者對未曾配置設定的記憶體作釋放,都會造成當機;而另一方面,如果對長期不用的或不再使用的記憶體不釋放,則會浪費系統資源,甚至是以造成資源枯竭.
(2) Java不在所有類之外定義全局變量,而是在某個類中定義一種公用靜态的變量來完成全局變量的功能.
(3) Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能.
(4) Java不支援頭檔案,而C和C++語言中都用頭檔案來定義類的原型,全局變量,庫函數等,這種采用頭檔案的結構使得系統的運作維護相當繁雜.
(5) Java不支援宏定義,而是使用關鍵字final來定義常量,在C++中則采用宏定義來實作常量定義,這不利于程式的可讀性.
(6) Java對每種資料類型都配置設定固定長度.比如,在Java中,int類型總是32位的,而在C和C++中,對于不同的平台,同一個資料類型配置設定不同的位元組數,同樣是int類型,在PC機中為二位元組即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平台性(平台無關性).
(7) 類型轉換不同.在C和C++中,可通過指針進行任意的類型轉換,常常帶來不安全性,而在Java中,運作時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換.
(8) 結構和聯合的處理.在C和C++中,結構和聯合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的内容都封裝在類裡面.
(9) Java不再使用指針.指針是C和C++中最靈活,也最容易産生錯誤的資料類型.由指針所進行的記憶體位址操作常會造成不可預知的錯誤,同時通過指針對某個記憶體位址進行顯式類型轉換後,可以通路一個C++中的私有成員,進而破壞安全性.而Java對指針進行完全地控制,程式員不能直接進行任何指針操作.
Java學習
Java - 近10年來計算機軟體發展過程中的傳奇,其在衆多開發者心中的地位就如“屠龍刀”、“倚天劍”。
Java是個平台,我隻想說說我對學好Java的一點看法,希望對初學者有所幫助。
1. 思考一下
學習Java之前,先别急,靜下心來好好想想:
1)你對學習Java是否有興趣?
2)你是否能靜下心來堅持不懈地學習?
嗯,這是個容易但又絕對不應該忽略的問題,你确信自己對Java感興趣、而且又有吃苦的準備,那你才可能學好Java!如果具備這兩點條件,就請繼續往下看……
2. 準備一下
請不要把你的學習Java之路和其它計算機技術分開看待,技術的聯系往往是千絲萬縷的,你應該掌握一些學習Java所涉及的基礎知識,對于“CLASSPATH要怎麼設定啊”、“跪求JDK下載下傳位址”等等問題,你不該問,因為Internet上太多答案了,甚至換個角度說,你是不是還不适合直接學習程式設計?
1)買本Java學習用書。
JDK 6正式版剛剛推出,市面上你暫時買不到JDK6的書籍,但我仍推薦你買一本适合入門的、較新JDK版本的Java書籍,那麼,你現在選擇一本講述JDK5的入門書籍還是有條件的。我可以推薦一些入門書,但是我不打算這麼做,因為合我口味的,不一定适合你。但無論如何,《Thinking In Java》絕對不應該作為你入門Java的第一本書籍!
記住,網絡上學習Java的資源很多,但基本不夠系統,擁有一本Java入門書籍,是你系統學習Java的基礎。
2)準備Java學習環境。
準備你的學習環境,很簡單,安裝JDK6,然後用類似UltraEdit、EditPlus的文本編輯器配置你的學習環境,Internet上有很多關于如何配置的文章。初學Java,不建議用IDE工具,通過一行行的敲代碼,你會碰到很多問題,隻有這樣,你才能學會怎樣解決問題,并加深自己對Java的了解。
準備好後,開始進入激動人心的Java學習裡程吧!
3. Java基礎學習之路
學習Java的過程雖然辛苦些,但又是處處有精彩!學習過程中的心态一定要保持專一,網上關于語言間的“PK”到處都是,别被浮躁影響!認準了Java,你就堅持!克服心魔,恒心最終會給你回報的。
Java的體系分為Java SE、Java EE和Java ME(JDK 5.0以前分别叫J2SE、J2EE和J2ME),Java的敲門磚就是Java SE了,也就是你要入門學習的内容,不論你日後是選擇哪個體系領域作為發展方向,你都得從Java SE起步。
學習Java SE,打好Java基礎;如果想學Java EE(對不起,我不了解JavaME,是以我無法涉及JavaME的相關内容),對于AWT、Swing是否要學習呢,我個人是覺得還是要知道其是以然的,特别是其事件處理模式,我強烈建議初學者一定要弄清楚,其他具體的開發就不一定要全面掌握了,畢竟AWT、Swing方面的内容足夠用幾本大部頭的書才能描述詳盡;當然,如果你的工作就是做AWT、Swing開發,那就另當别論了。
I/O、Thread都是基礎之一。
4. Java EE學習之路
學習了Java SE,還隻是完成“萬裡長征”的第一步。
接下來選擇學習Java EE或是Java ME(或者你還想不斷深入學習JavaSE,隻要你喜歡,你可以一直深入下去,就像前面所說的,我不會講到Java ME的學習);估計選擇Java EE方面的學習者會多一些,JavaEE所涉及技術非常多,考慮到初學者的接受程度,我會盡量從最常用的角度來介紹。
學習Java EE,在開發環境上不建議再用文本編輯器,我感覺NetBeans 5.5(目前最高正式版本)很适合初學者,我個人也很喜歡NetBeans,如果你喜歡用别的IDE如Eclipse,都沒問題,看自己喜歡吧。
4.1 學習JSP/Servlet
Java EE最高版本目前是5.0版本。
在JavaEE中,首先要學習JSP/Servlet(結合Tomcat、MySQL)技術,建議JSP1.2/2.X的知識都要掌握,畢竟現在很多的在用系統都還是基于JSP1.2,學習JSP,還必須掌握一些外延技術,如:你還得掌握HTML基礎知識,最好再掌握些JavaScript(目前正火的AJAX技術之一)、CSS的技術,而了解XML是必不可少的(至少描述性配置資訊是通過XML來描述的)。在學習JSP/Servlet過程中,應該結合學習JDBC、資料庫開發技術,畢竟絕大多數Java Web項目都是和資料庫緊密結合的。
4.2 學習資料庫開發技術
這裡我想重點說一下資料庫開發技術,資料庫技術是做業務系統必備技能,JavaWeb開發人員最低程度都應該掌握SQL語句的使用!資料庫技術大體可分為DBA技術和資料庫開發技術,對于開發而言,應側重資料庫開發技術,而資料庫基本操作,也是要掌握的。常用資料庫有DB2、Oracle、SQLServer、MySQL等,你可以結合實際需要,選擇一種資料庫,并花大力氣掌握其開發技術。
記住,學習資料庫開發技術和學習Java EE,是相對獨立的,你可以在學習JSP/Servlet的同時,學習資料庫開發技術(如SQL語句等),或者先學資料庫開發技術,之後再學習JSP/Servlet。
4.3 學習Java EE其它開發技術
再往後,可以學習一些EJB的知識,目前EJB最新版本是3.0,其和前面的2.X版本相比,有較大不同,考慮到目前EJB2.X還有很大的應用市場,建議結合學習EJB 2.X/3.0。在學習EJB過程中,應同時掌握一種企業級應用伺服器的使用(如WebSphere、Weblogic、Sun Applcation Server或JBOSS等,目前Sun Applcation Server9.X和JBOSS都可支援EJB 3.0)。
之後的學習中,再逐漸擴充到其他Java EE技術。
5. 之後
等你對Java EE有些感悟的時候,你自然就會想不斷擴充你的知識面,這時候你可以學習Spring、Hibernate,以及各種Web架構(如Struts、JSF、Webwork或是Tapestry等)。
随着技術、經驗的不斷積累,你會逐漸關注分析、設計等更高層次的知識,這時候,你可進一步學習相關的UML、模式等知識(積累了一定經驗,你就可以安排自己學習這些知識了)。
6. 小結
永遠記住:自始至終,實踐是學習Java技術曆程中極其重要的一環。脫離了實踐,是學不好技術的!
Java學習、實踐之路依然沒有銀彈,況且一步步走來,要學的東西很多,勤奮是金!
善于利用Internet上衆多的資源,多吸取些别人的經驗。
JAVA架構設計:
Java架構設計
軟體架構作為一個概念,展現在技術和業務兩個方面。
從技術角度來說:軟體架構随着技術的革新不斷地更新其内容,軟體架建構立于目前技術和一些基本原則的基礎之上。
先說一些基本原則:
分層原則:分層是為了降低軟體深度複雜性而使用的關鍵思想,就像社會有了階級一樣,軟體有了層次結構。
子產品化原則:子產品化是化解軟體廣度複雜的必然手段,子產品化的目的就是讓軟體分工。
接口實作分離原則随着軟體子產品化的不斷深入改進,面向接口程式設計而不是面向實作程式設計可以讓複雜度日趨增高的軟體降低子產品之間的耦合度,進而讓各子產品更輕松改進。從這個原則出發,軟體也從微觀進行了細緻的規範化。
還有兩個比較小但很重要的原則:
細節隐藏原則很顯然把複雜問題簡化,把難看的細節隐去,能讓軟體結構更清晰。其實這個原則使用很普遍,java/c++語言中的封裝原則以及設計模式中的Facade(外觀)模式就很能展現這個原則的精神。
依賴倒置原則随着軟體結構的進一步發展,層與層之間、子產品與子產品之間的依賴逐漸加深,而層、子產品的動态可插拔要求不端增大。依賴倒置原則可看視 為接口實作分離原則的深化,根據此原則的精神,軟體進入了工具時代。這個原則有點類似于知名的好萊塢法則:Don't call us, we'll call you。
以上這些原則奠定了我們的軟體架構的價值名額。但軟體架構畢竟是建立在目前技術之上的。而每一代技術都有架構模式。過去的不再說了,讓我們現在就來看一下目前流行的技術,以及目前我們能采用的架構。
因為面向對象是目前最流行開發技術,且設計模式的大量使用使面向對象的走向成熟,而資料庫是目前最有效的存儲結構、web界面是目前最流行的用 戶接口,是以目前最典型的三層次架構就架構在以上幾項技術的基礎之上,用資料庫作存儲層、用面向對象來實作業務層、用web來作為使用者接口層。我們從三層 次架構談起:
因為面向對象技術和資料庫技術不适配,是以在标準三層次架構的基礎上,我們增加了資料持久層,來管理O-R雙向映射,但目前一直沒有最理想的實 現技術。cmp和entity bean技術因為其實作複雜,功能前景有限,已接近被淘汰的邊緣。JDO及hibernate作為o-r映射的後期之秀,尤其是hibernate,功能 相當完備。推薦作為持久層的首選
在業務層,因為目前業務日趨負載,且變動頻繁,是以我們必須有足夠靈活的技術來保證我們的适應變化的能力,在标準j2ee系統中session bean負責業務處理,且有不錯的性能表現,但采用ejb系統對業務架構模式改變太大,且其複雜而昂貴,業務代碼移植性差。而spring 作為一個bean配置的輕量級架構,漂亮的IOC模式實作,對業務架構影響小,是以推薦作為中間層業務架構。
在使用者結構層,雖然servlet/jsp/jstl/javaBean 能夠實作MVC架構,但終究過于粗糙。struts對MVC架構的實作就比較完美,Taperstry也極好地實作MVC架構,且采用基于事件的方式,非 常誘人,惜其不夠成熟,我們仍舊推薦struts作為使用者接口層基礎架構。
因為業務層是三層次架構中最有決定意義的,是以讓我們回到業務層細緻地分析一下,在複雜的業務我們常常需要以下基礎服務的一種或幾種:事務一緻 性服務acid(tool:jta/jts)、并發加鎖服務concurrent&&lock、池化管理服務cache、通路控制服務 (tool:jaas)、流程控制服務workflow、動态實作服務IOC,串行化消息服務(tool:jms)、負載平衡服務blance等。如果我 們不采用重量級應用伺服器(如weblogic,websphere,jboss等)及重量級元件(EJB),我們必須自己實作其中一些服務。雖然我們大 多情況下,不需要所有這些服務,但實作起來卻非易事。幸運的是我們有大量的開源實作代碼,但采用開源代碼卻常常是件不輕松的事。
随着xml作為結構化資訊傳輸和存儲地位日漸重要,一些xml文檔操作工具(DOM,Digester,SAX等)的使用愈發重要,而随着 xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,采用xml schema來設計xml文檔格式,然後采用java binding來生成java bean 會成為主要程式設計模式,而這又進一步使資料中心向xml轉移,使在中小資料量上,愈發傾向于以xquery為查詢語言的xml資料庫。最近還有一個趨勢, microsoft,ibm等紛紛大量開發中間軟體如(microsoft office之infopath),可以直接從xml schema 生成 錄入頁面等非常實用的功能。還有web service 的廣泛應用,都将對軟體的架構有非常重大的影響。至于面向服務架構(SOA)前景如何,三層次架構什麼時候走入曆史,現在還很難定論。
aop的發展也會對軟體架構有很深的影響,但在面向對象架構裡,無論aspectJ還是jboss-aop抑是aspectWerks、 nanning都有其自身的嚴重問題:維護性很差,是以說它将很難走遠。也許作為一個很好的思想,它将在web service裡大展身手。
rdf,owl作為w3c語義模型的标志性的語言,也很難想象能在目前業務架構發揮太大影響。但如果真如它所聲稱那樣,廣泛地改變着資訊的結構。那麼對軟體架構也會有深遠影響。
在這裡我可以對那些想要學習這方面知識的人推薦一下【英才添翼】,這個學校還是不錯的,是國内最高端的一個專注于架構設計軟體開發人員培養的專業機構,但是這個學校對學員的入學條件要求比較高。如果感興趣,你們可以自己在網上查一下他們學校。
有關架構設計的一些忠告:
盡量建立完整的持久對象層.可獲得高回報
盡量将各功能分層,分塊,每一子產品均依賴假定的其它子產品的外觀
不能依賴靜态資料來實作IOC模式,應該依賴資料特征接口,靜态資料僅是資料特征接口實作方式之一
架構設計時xml是支援而不是依賴.但可以提供單一的xml版本的實作
從業務角度說:軟體架構應是深刻展現業務内部規則的業務架構,但因為業務變化頻纴,是以軟體架構很難保持恒定不變,但業務的頻繁變化不應是軟體架構大規模頻繁變化的原因,軟體架構應是基于變化的架構。
一種業務有其在一段時間内穩定存在的理由(暫且不談),業務内部有許多用例,每一種用例都有固定的規則,每一規則都有一些可供判定的項,每一項 從某一次元來觀察都是可測量的,我們的架構首先必須保證完美适應每一項每一種測量方式,很多失敗的架構都是因為很多項的測量方式都發生變更這種微觀變化 中。
每個用例都有規則,我們在作業務用例分析,常常假定一些規則是先驗的,持久穩定的,然而後來的業務改變常常又證明這種看法是錯誤的,然而常常我 們的架構已經為之付出了不可挽回的代價。大量事實證明:規則的變化常常用例變化的根本原因。是以我們的架構要盡可能适應規則的變化,盡可能建立規則模版。
每個用例都關系着不同的角色。每一個用例的産生都必然是因為角色的變更(注意:不是替換,而是增強或減弱),是以注意角色的各種可能情況,對架構的設計有舉足輕重的意義。在我們目前的三層架構裡,角色完美地對應接口概念。
在一個系統裡很多用例都互相關聯,考慮到每個用例均有可能有不同的特例,是以在架構設計中,盡量采用依賴倒置原則。如架構許可可采用消息通信模式(JMS)。這樣可降低耦合度。
現在我們談一下業務穩定存在理由對業務的影響。存在即是合理,在這裡當然是正确的。業務因人而存在,是以問業務存在的理由即是問不同角色的需要這項業務的理由以及喜歡不喜歡目前業務用例的理由,所有這樣的角色都應該在系統裡預留。
在架構設計中有幾個原則可以考慮:
用例盡量細分
用例盡量抽象
角色盡量獨立
項測量獨立原則
追求簡單性
這裡未提供相關的例子,例子會在以後的更新時提供。
業務和模式之間的關系
業務中的一些用例之間的關系常常和一些正常的模式很相似。但随着時間的演化,慢慢地和先前的模式有了分歧。這是個正常的現象。但這對系統架構卻要求非常高,要求系統架構能适應一些模式的更替。在這裡我們盡可能早地注意到用例之間的互相角色變化,為架構更新做好準備.
Java開發中的技巧
Eclipse中最常用的快捷鍵:Ctrl+L Go to Line
F5 Step Into
Ctrl+H Open Search Dialog
Ctrl+Shift+K Find Previous
Ctrl+F11 Run
Ctrl+Shift+/ Remove Block Comment
F11 Debug
Ctrl+Shift+/ Add Block Comment
Ctrl+K Find Next
F8 Resume (during Debug)
Ctrl+O Quick Outline
Alt+Shift+R Rename (Refactoring)
F3 Open Declaration
Ctrl+R Run to Line
Ctrl+/ Toggle Comment
Ctrl+Shift+O Organize Imports
F6 Step Over
Ctrl+Shift+F Format
Ctrl+Shift+G References in Workspace