java開源緩存
1. java開源web項目有哪些
Spring MVC
Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發框架,如Struts1,Struts2等。
2. Struts 2
為了更詳細的闡述現代軟體工程師廣泛使用的現有Java框架,我們決定參考Apache的Struts 1後繼版本Struts 2。這個Java框架對於使用構建當代Java EE Web應用程序的工程師來說是一個很好的選擇。Apache軟體基金會為開發人員提供了一個廣泛的工具,用於創建企業級的面向Web的應用程序,開發過程的優化從開始貫徹到結束,還提供後期的維護。如果你還在為高負載系統(如廣播門戶)發愁,這個框架將是你的不二之選。
3. Hibernate
這個 Java 映射框架藉助於將持續存在的資料庫訪問操作替換為高層次的對象處理功能,來解決對象-關系的不匹配問題。每一個企業應用程序的情況都不同,而Hibernate則擁有功能強大的工具套件來幫助後台開發人員對其數據訪問層進行微調。這是一個高級的 ORM 框架,你可以用它來在 Java 對象(實體)上進行資料庫操作。利用 Hibernate 緩存來將 Java 環境中的數據持久化到資料庫是一個持久化的概念、
4. JSF
作為java EE的一部分,JavaServer Faces被Oracle所支持。雖然這不是一個可以進行快速java開發的最好框架,但它很容易使用,因為Oracle提供了大量文檔。此外,除非你離開java EE環境,JSF不需要任何的外部依賴,而功能非常強大。它擁有豐富的庫和工具(包括一個簡單的用戶界面生成工具),使之成為了一個神奇的魔法棒,無論應用程序可能看起來有多麼復雜,它都可以給予你支持與幫助。
5. Vaadin
當現代開發者創建商業應用程序,並使用GWT渲染終端網頁時,Vaadin稱得上是一個超級流行的框架。Vaadin利用一個眾所周知的基於組件的方法,能夠適應瀏覽器的變化,從而減輕了開發商的負擔。它擁有一套擴展的用戶界面組件,以及各種不同的部件和控制項,可以讓程序員在任何時候都可以建立一個很酷的應用程序。
6. Google Web Toolkit
GWT是另一個免費的java框架,它允許程序員創建和優化復雜的網路應用程序。GWT的軟體開發工具包包括核心的java API和小部件,構建隨後可以編譯成JavaScript的應用程序。
7. Grails
這個獨特的框架被視為是提升工程師生產效率的動態工具,因為其乾脆的API設計,合理的默認值以及約定架構。與java的無縫集成使得這個框架成為世界上眾多框架中的首選。一系列強大的特性,如基於sping的依賴注入和各式各樣的插件,可以提供創建現代基於web的app的所有需要的東西。
2. 請問免費的開源java快速開發平台有哪些
JBoss Seam
JBoss Seam,算得上是Java開源框架裡面最優秀的快速開發框架之一。
Seam框架非常出色,尤其是他的組件機制設計的很有匠心,真不愧是Gavin King精心打造的框架了,雖然看起來還是有些缺陷,但是做企業應用項目的話,Seam是一個很棒的選擇,作為程序員來說,要比用 Spring/Hibernate/Struts省心的多,更能夠把精力放在業務邏輯的編寫上面,開發效率也很不錯,可能是Java開源框架裡面最優秀的 快速開發框架之一了。
Jdon Framework
Jdon Framework(簡稱JF)是一套適合開發中小型J2EE應用系統的快速開發框架、也是一套Ioc/Aop框架、更是一套符合當前國際水平的、面向組件開發的、國人擁有自主產權的中間件產品。中國第一個開源框架,國內先進的組件、構件工具。
分布式快速開發平台 iBase4J
項目簡介: iBase4J 是 Java 語言的分布式系統架構。 使用 Spring 整合開源框架。使用 Maven 對項目進行模塊化管理,提高項目的易開發性、擴展性。系統包括5個子系統:公共功能、系統管理 Service、系統管理 Web、業務 Service、業務 Web。
公共功能:公共功能(AOP、緩存、基類、調度等等)、公共配置、工具類。
系統管理:包括用戶管理、許可權管理、數據字典、系統參數管理等等。
業務相關:您的業務開發。 可以無限的擴展子系統,子系統之間使用 Dubbo 或 MQ 進行通信。
python Web 開發框架
python語言,功能強大,開發效率高,平台移植性好,可擴展性好,很適合小型的團隊作戰,他的語法採用縮進形式編寫,比較簡單,容易上手,並且目前Web 開發框架很多,可以直接運用。
3. java現在開源的緩存框架那個最好!
mvnForum 點擊次數:7210
mvnForum是基於javaJ2EE 技術(Jsp/Servlet)的一個開源論壇.,安裝簡單。mvnForum兼容任何Servlet容器,支持Jsp 1.2 and Servlet 2.3。
JForum 點擊次數:6633
JForum 是一個功能強大 ,易於管理的論壇。它的設計完全遵從MVC設計模式,能夠在任何Servlet容器與EJB伺服器上運行。而且可以輕松的定製與擴展JForum論壇。
xforum 點擊次數:7789
國人開發的一個開源論壇,基於 Struts 技術,是學習 Struts 的一個非常好的範例。它用到 JAAS 實現 Security ,中文問題的解決,數據層用到 DAO ,以及基於 Struts 應用的基本架構,都是個非常好的學習。
jGossip 點擊次數:2583
jGossip是一個簡單,功能強大的java論壇。可運用j2EE在平台上。採用Struts framework技術。
FreeForums 點擊次數:2164
一個基於XML的Java2企業級的論壇解決方案。FreeForums頁面採用CSS, DHTML 與JavaScript等技術。這樣用戶可以定製自已喜歡的界面。它還提供一個在Windows下的客戶端程序。
Sk Forum 點擊次數:1549
SK Forum是一個開源的基於web的J2EE論壇應用程序。它是一個功能比較齊全的系統,包括很多功能比如:投票,wiki,定時跟蹤,地址薄,好友薄以及其它一些小的功能。
JsForum 點擊次數:1488
JsForum是只用到jsp與Servlet技術的論壇,容易使用。具有一般論壇的功能。但是目前只能支持MYSQL資料庫。
nemesis-forum 點擊次數:1197
一個使用J2EE技術的論壇。它的功能包括用戶與用戶組許可權管理,支持i18n,內容過濾,綜合搜索引擎,支持多種資料庫。
Yazd 點擊次數:1499
Yazd是一個使用JDBC連接資料庫的論壇。它的特性包括:
1.提供在線安裝和配置。
2.內容過濾(把Html代碼轉換成可顯示的文件,自定義關鍵字過濾列表,隱藏urls的實現路徑)。
3.集成Lucene1.3提供關鍵字搜索功能。
4.支持的資料庫包括:Oracle,MySQL,DB2,Microsoft SQLServer,Sybase,Interbase,Hypersonic SQL,Pointbase,Informix和Postgres
5.還有其它一些一個論壇應具備的基本功能。
這個論壇提供多語言支持其中包括簡體中文。
JavaBB 點擊次數:2275
JavaBB基於java技術的類似於phpbb的論壇。
JForumFusion 點擊次數:2295
JForumFusion是一個Java開源論壇。它主要的一些功能包括常規論壇功能,文件附件上傳,個人信息,基於web的管理工具,UBBCode,和高性能的搜索引擎等。支持主流資料庫包括:Oracle, DB2, MySQL, PostgreSQL, Sybase, SAP DB, HypersonicSQL, Microsoft SQL Server...
jzForum 點擊次數:1745
這是一個利用Java開發的簡單論壇.以下列出它的幾點特性:
* 完全支持BBCode,
* 在新貼提交時利用AJAX技術提供無刷新頁面預覽功能.
* 利用lucene提供全文本搜索功能.
* 用戶可監控主題.
* 可以容易更改樣式(利用CSS幾乎沒有用到table).
* 安裝簡單只有一個war文件沒有資料庫(其實是內嵌hypersonic資料庫)但 也支持其它資料庫.
* 包括一個投票系統.
* jzForum還提供RSS閱讀功能並利用緩存技術提高整個論壇的速度.
BBS-CS 點擊次數:4336
天乙社區是一套基於JAVA技術的網路虛擬社區,採用了Hibernate+Spring+Struts的輕量級J2EE框架.
1、全文檢索:天乙社區6.0採用Lucene全文檢索,並支持完全國際化多語言的全文檢索。
2、MVC框架:天乙社區6.0繼續了5.x的Struts框架,但經過優化,WEB端更加簡潔高效。
3、集群支持:系統可以運行在集群上。
4、功能方面:大大加強了管理功能,用戶可以多樣化的定製系統的各項信息,包括用戶級別、封鎖IP、過濾字等等,論壇功能上主要增加了投票帖、上傳附件類型多樣、帖子中顯示用戶信息等等功能等。
EasyJF 點擊次數:650
簡易java框架開源論壇系統擁有常用論壇系統的基本功能,集前台後台代碼為一體,支持UBB。該論壇系統使用基於OO的方法設計,採用多層B/S構架,資料庫持久層主要使用簡易資料庫開源框架EasyDBO,Web層使用EasyJWeb框架,java代碼與頁面完全分離,易擴展。
4. 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模式J2EEWeb框架。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插件】
Apusic JSF 【Java開源 Web框架】
Apusic JSF-基於Ajax技術的JSF開源引擎。通過Apusic JSF的Ajax特性,我們能夠只把發生變化的數據打包成Ajax請求發送給伺服器端,而伺服器端也只會將發生變化的數據打包成Ajax應答,從而大大提升系統的運行效率。並且,傳統的JSF請求應答將刷新整個頁面,而Apusic JSF將只更新發生變化的客戶端組件,從而給客戶帶來更好的人機體驗......
Struts 【Java開源 Web框架】
Struts是一個基於Sun J2EE平台的MVC框架,主要是採用Servlet和JSP技術來實現的。由於Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。【StrutsIDE:用於Struts輔助開發的一個Eclipse插件】
Strecks 【Java開源 Web框架】
針對Java 5.0開發人員設計,擴展自Struts的一個Web框架。它的特點包括:POJO action,注釋式校驗,數據綁定和轉換,依賴注入,攔截器等。
jxyz 【Java開源 Web框架】
pojo的mvc框架,使用java註解,使用ognl傳輸上下文,使用hivemind做ioc容器,使用spring簡化hibernate操作,使用泛型來減少重復代碼。 有以下幾個特點。
1.Pojo。任何一個java類都可以做Action(logic),為了改造現在常用的ssh,tsh,wsh框架成sh,支持spring bean做Action(logic)
2.0配置,根據命名規范來查找Action類和view
3.和web環境松耦合,從理論上講可以用在swing里
4.支持tdd開發,框架本身就是以tdd開發方式開發
5.代碼少,一般mvc需要5個類,xyz只要3個,還可以通過GenericDAO,GenericLogic來減少重復代碼
6.對開發者來說,一切實現都可以自己定製,由於hivemind支持迭代開
Hibernate 【Java開源 持久層框架】
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。Eclipse平台下的Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】
IBATIS 【Java開源 持久層框架】
使用ibatis 提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現ORM 而言基本一致,而對於具體的數據操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL 語句。相對Hibernate等 「全自動」ORM機制而言,ibatis 以SQL開發的工作量和資料庫移植性上的讓步,為系統 設計提供了更大的自由空間。作為「全自動」ORM 實現的一種有益補充,ibatis 的出現顯 得別具意義。
EasyJWeb 【Java開源 Web框架】
EasyJWeb是基於java技術,應用於WEB應用程序快速開發的MVC框架,框架設計構思來源於國內眾多項目實踐,框架充分借簽了當前主要流行的開源Web框架(Struts、JSF、Tapestry 、Webwork),吸取了其優點及精華,利用Velocity作為模板頁面引擎,是一個實現了頁面及代碼完全分離的MVC開發框架。是一個能實現中小型Web應用系統快速開發的簡易Web框架。
Tapestry 【Java開源 Web框架】
Tapestry是一個開源的基於servlet的應用程序框架,它使用組件對象模型來創建動態的,交互的web應用。一個組件就是任意一個帶有jwcid屬性的html標記。其中jwc的意思是Java Web Component。Tapestry使得java代碼與html完全分離,利用這個框架開發大型應用變得輕而易舉。並且開發的應用很容易維護和升級。Tapestry支持本地化,其錯誤報告也很詳細。Tapestry主要利用javabean和xml技術進行開發。【Spindle:Tapestry輔助開發Eclipse插件】.
Turbine 【Java開源 Web框架】
Turbine是基於Servlet的框架包,也是開放源代碼Jakarta項目。目前還沒有關於Turbine的大量文檔。它類似於Struts,但是有一些主要區別。突出的一點就是它並沒有與JSP耦合。Turbine的特點是它提供了大量可重用的組件。此框架包中包含了大量組件,但是這些組件是離散的。它似乎應該給出更多的組件庫,但是由於它缺少文檔,所以很難掌握完整的體系結構。
Nuxeo5 【Java開源 J2EE框架】
Nuxeo5是一個用於ECM(Enterprise Content Management)應用程序開發的開源框架。基於組件和面向服務的架構使得它真正易於定製和擴展。Nuxeo5構建流行的Java5與Java EE5技術包括:Apache Jackrabbit ,JBoss應用伺服器,JBoss Seam,jBPM,JBoss Rules,JSF,EJB3等,並運用OSGi與Nuxeo Core。
Jt 【Java開源 J2EE框架】
Jt是一個輕量級的,面向設計模式的J2EE框架。Jt已經被運用到一些大型的關鍵業務系統(mission critical system)。Jt實現了許多著名設計模式包括DAO(Data Access Object),GoF中的設計模式和J2EE模式。該框架支持的一些J2EE技術包括JSP,JDBC,EJB,JavaMail,XML和Web Services。
Open-jACOB eMail 【Java開源 WebMail】
Open-jACOB eMail是一個輕量級IMAP客戶端,基於Javamail API與Open-jACOB框架開發。界面類似於Gmail,它提供的功能包括完整的folder list,message list和contact list。
Open-jACOB 【Java開源 Web框架】
Open-jACOB是一個Web框架用於開發基於AJAX,資料庫驅動,跨瀏覽器的Web應用程序。該框架設計成一個基於Eclipse的插件,可以利用該插件設計資料庫,設計UI,部署/測試應用程序等。具體用法可查看其提供的一個Flash Demo。
Ruby on Spring 【Java開源 Web框架】
Ruby on Spring是一個採用Ruby on Rails的思想與優點,集成JRuby動態語言與Spring框架而開發的開源項目。基於MIT license發布。
Ebean 【Java開源 持久層框架】
Ebean是一個對象/關系映射持久層框架。它與EJB3相類似,但該框架簡單易於學習和使用。它特點: 1.兼容EJB3 ORM映射。2.支持級聯保存和刪除。3.支持懶載入。4.事務管理和日記功能。5.Statement Batching 5.支持緩存。6.Clustering。7.集成Lucene文本搜索。
5. Java 世界有哪些優秀的第三方開源 jar 包值得推薦使用
我說幾個常用的吧。
工具類:
1. log4j
理由:向system.out.println()說永別,剛開始學java的時候總是喜歡依靠system.out.println()的輸出來查看異常和調試。後來工作後就果斷log4j了,這樣項目開發和發布的時候,可以根據自己的需求開關日誌級別,把日誌列印到遠程服務等多種功能。現在這個基本成為標配了。
2.guava
google出品的第三方工具庫。當java.util 提供的數據結構不能滿足的時候從這里你可以快速找到大量已經寫好的數據結構了,這使得你不用花費心思在一些常用的數據結構上了。比如LRU緩存之類的。只是好幾個版本的跨度比較大,兼容也不怎麼好。
3.apache commons 包含的組件
apache commons 涵蓋了大量的小工具,比如發郵件(線上告警用),快速且方便的IO操作封裝。等等工具很多,可以自己慢慢去學習。
4.netty
一個網路通信框架,當需要實現自定義協議的時候我就用這個,netty的新版本自帶了很多協議的實現版本,這是搞網路快速開發不二的選擇。
5.httpclient 系列
主要是用在測試線上服務的時候用的。畢竟是一個基於http協議網路工具,當開發的web上線的時候,利用httpclient來寫測試用例,效果很不錯。測試的工具有很多,但是這個可以滿足你定製http請求的需求。
服務類:
1.jetty
httpclient 的同一個項目下有一個簡易的http server 但是沒有實現servlet,這個時候jetty的效果就體現出來了。特別的是,當你打算對 jsp jstl 等方式編寫的網頁進行功能測試的時候,jetty就可以承擔 mock的作用,好用得很。使得你可以在junit的框架下對jsp編寫的網頁進行測試。
2.maven
現在的java已經離不開這個玩意了。你可以自己搭建一個nexus 來做maven私服。當你存在RPC的需求的時候。完全可以把自己的介面部分和client打包上傳到maven私服,調用的服務只需要include這個包就可以遠程調用你的服務了。在國內配合上bbo這類 SOA框架。那個效果酸爽的很。完成了實際意義上的介面於實現在網路層級的分離。讓java 的package 形成一個網路上的package。需要某個服務的時候,include 直接調用。其他的一律不用管。
6. Java本地緩存有哪些
下面給你介紹幾個常見的java緩存框架:
1、OSCache
OSCache是個一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。
OSCache有以下特點:
緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬碟,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
2、Java Caching System
JSC(Java Caching System)是一個用分布式的緩存系統,是基於伺服器的java應用程序。它是通過提供管理各種動態緩存數據來加速動態web應用。
JCS和其他緩存系統一樣,也是一個用於高速讀取,低速寫入的應用程序。
動態內容和報表系統能夠獲得更好的性能。
如果一個網站,有重復的網站結構,使用間歇性更新方式的資料庫(而不是連續不斷的更新資料庫),被重復搜索出相同結果的,就能夠通過執行緩存方式改進其性能和伸縮性。
3、EHCache
EHCache 是一個純java的在進程中的緩存,它具有以下特性:快速,簡單,為Hibernate2.1充當可插入的緩存,最小的依賴性,全面的文檔和測試。
4、JCache
JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。
5、ShiftOne
ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。
6、SwarmCache
SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
SwarmCache使用JavaGroups來管理從屬關系和分布式緩存的通訊。
7. 幾個著名Java開源緩存框架介紹
為String類中中實現了用加號「+」來連接兩個字元串而沾沾自喜。我認為這是Java中最甜的語法糖,甚至甜到掉牙。兩個字元串str1和str2。如果你使用:
str1 + str2;
這樣的語法並不會改變str1的字元串內容。要寫作:
str1 = str1 + str2;//str1 += str2;
你或許很清楚這個語法。而這背後所做的操作其實在內存中新建了一
8. Java開源框架是什麼
其實框架很簡單的,你可以認為它是一個工具,甚至一個插件。
框架的作用,就是將一個公用的,常用的技術,封裝起來,
幫你處理一些基礎的東西,可以讓你不用再去寫那些繁瑣的東西。
就拿你要學的struts來說:他本質上也是用java寫的,和我們自己寫的類沒有區別,他實現的東西我們自己也可以實現。
比如接收客戶端的數據,我們是用request.getParameter()來的,但是如果有很多個參數,我們要寫很多個,很麻煩。struts它就幫我們實現,不用我們寫,直接寫個屬性,就可以得到。其實本質還是用request.getParameter()。。
所以你不要再在意框架是什麼東西,等你接觸了就知道了。你把它當做一個工具來用,這就是框架。
前台框架:jQuery
Mvc框架:Struts、spring Mvc
核心框架:Spring
orm框架:Hibernate、Spring JDBC、myBatis。
9. Java代碼如何優化
今天就跟中公優就業一起來看看java代碼優化細節。
1、盡量指定類、方法的final修飾符
帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。如果指定了一個類為final,則該類所有的方法都是final的。Java編譯器會尋找機會內聯所有的final方法,內聯對於提升Java運行效率作用重大,具體參見Java運行期優化。此舉能夠使性能平均提高50%。
2、盡量重用對象
特別是String對象的使用,出現字元串連接時應該使用StringBuilder/StringBuffer代替。由於Java虛擬機不僅要花時間生成對象,以後可能還需要花時間對這些對象進行垃圾回收和處理,因此,生成過多的對象將會給程序的性能帶來很大的影響。
3、盡可能使用局部變數
調用方法時傳遞的參數以及在調用中創建的臨時變數都保存在棧中速度較快,其他變數,如靜態變數、實例變數等,都在堆中創建,速度較慢。另外,棧中創建的變數,隨著方法的運行結束,這些內容就沒了,不需要額外的垃圾回收。
4、及時關閉流
Java編程過程中,進行資料庫連接、I/O流操作時務必小心,在使用完畢後,及時關閉以釋放資源。因為對這些大對象的操作會造成系統大的開銷,稍有不慎,將會導致嚴重的後果。
5、盡量減少對變數的重復計算
明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++){...}
建議替換為:
for (int i = 0, int length = list.size(); i < length; i++){...}
這樣,在list.size()很大的時候,就減少了很多的消耗
6、盡量採用懶載入的策略,即在需要的時候才創建
例如:
String str = "aaa";if (i == 1){list.add(str);}
建議替換為:
if (i == 1){String str = "aaa";list.add(str);}
7、慎用異常
異常對性能不利。拋出異常首先要創建一個新的對象,Throwable介面的構造函數調用名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆棧,收集調用跟蹤信息。只要有異常被拋出,Java虛擬機就必須調整調用堆棧,因為在處理過程中創建了一個新的對象。異常只能用於錯誤處理,不應該用來控製程序流程。
8、不要在循環中使用try…catch…,應該把其放在最外層
除非不得已。如果毫無理由地這么寫了,只要你的領導資深一點、有強迫症一點,八成就要罵你為什麼寫出這種垃圾代碼來了
9、如果能估計到待添加的內容長度,為底層以數組方式實現的集合、工具類指定初始長度
比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet等等,以StringBuilder為例:
(1)StringBuilder() // 默認分配16個字元的空間
(2)StringBuilder(int size) // 默認分配size個字元的空間
(3)StringBuilder(String str)// 默認分配16個字元+str.length()個字元空間
可以通過類(這里指的不僅僅是上面的StringBuilder)的來設定它的初始化容量,這樣可以明顯地提升性能。比如StringBuilder吧,length表示當前的StringBuilder能保持的字元數量。因為當StringBuilder達到最大容量的時候,它會將自身容量增加到當前的2倍再加2,無論何時只要StringBuilder達到它的最大容量,它就不得不創建一個新的字元數組然後將舊的字元數組內容拷貝到新字元數組中—-這是十分耗費性能的一個操作。試想,如果能預估到字元數組中大概要存放5000個字元而不指定長度,最接近5000的2次冪是4096,每次擴容加的2不管,那麼:
(1)在4096 的基礎上,再申請8194個大小的字元數組,加起來相當於一次申請了12290個大小的字元數組,如果一開始能指定5000個大小的字元數組,就節省了一倍以上的空間
(2)把原來的4096個字元拷貝到新的的字元數組中去
這樣,既浪費內存空間又降低代碼運行效率。所以,給底層以數組實現的集合、工具類設置一個合理的初始化容量是錯不了的,這會帶來立竿見影的效果。但是,注意,像HashMap這種是以數組+鏈表實現的集合,別把初始大小和你估計的大小設置得一樣,因為一個table上只連接一個對象的可能性幾乎為0。初始大小建議設置為2的N次冪,如果能估計到有2000個元素,設置成new HashMap(128)、new HashMap(256)都可以。
10、當復制大量數據時,使用System.array()命令