⑴ 如何用java代碼來監控系統內存·cpu·線程佔用情況,並生成日誌
可以學習軟體包 java.lang.management
提供管理介面,用於監視和管理 Java 虛擬機以及 Java 虛擬機在其上運行的操作系統。
ClassLoadingMXBean
用於 Java 虛擬機的類載入系統的管理介面。
CompilationMXBean
用於 Java 虛擬機的編譯系統的管理介面。
GarbageCollectorMXBean
用於 Java 虛擬機的垃圾回收的管理介面。
MemoryManagerMXBean
內存管理器的管理介面。
MemoryMXBean
Java 虛擬機內存系統的管理介面。
MemoryPoolMXBean
內存池的管理介面。
OperatingSystemMXBean
用於操作系統的管理介面,Java 虛擬機在此操作系統上運行。
RuntimeMXBean
Java 虛擬機的運行時系統的管理介面。
ThreadMXBean
Java 虛擬機線程系統的管理介面。
更多請訪問(bug315)
⑵ java獲取進程名稱
代碼:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue();
}
}
運行結果:2896@PC-20150603VRPL2896
當前進程ID為2896。
ManagementFactory是一個在運行時管理和監控Java VM的工廠類,它能提供很多管理VM的靜態介面,比如RuntimeMXBean;
RuntimeMXBean是Java虛擬機的運行時管理介面.
⑶ 什麼是JMX
所謂JMX,是Java Management Extensions(Java管理擴展)的縮寫,是一個為應用程序植入管理功能的框架。用戶可以在任何Java應用程序中使用這些代理雹枯悔和服務實現管理。
從圖中我們可以看到,JMX的結構一共分為三層:
Mbean分為如下四中
1、根據standard MBean的要求,我們首先要定義一個MBean介面,介面的命名規范以具體的實現類為前綴,為了後續可以注冊到MBean Server中
2、定義源正一個實現類
3、定義agent層
1、 通過工廠類獲取Mbean Server,用來做Mbean的容器
2、 ObjectName的取名規范: 域名:name=Mbean名稱 , 其中域名和Mbean的名稱可以任取。這樣定義後,我們可以唯一標示我們定義的這個Mbean的實現類了
3、最後將Hello這個類注冊到MbeanServer中,注入需要創建一個ObjectName類, 我們可以用jdk自帶的Jconsole用來觀察,可以設置屬性值和調用相關方法 。
MBean之間的通信是必不可少的,Notification起到了在MBean之間溝通橋梁的作用。JMX 的通知由四部分組成:
1、Notification這個相當於一個信息包,封裝了需要傳遞的信息
2、Notification broadcaster這個相當於一個廣播器,把消息廣播出。
3、Notification listener 這是一個監聽器,用敗早於監聽廣播出來的通知信息。
4、Notification filiter 這個一個過濾器,過濾掉不需要的通知。這個一般很少使用。保留Hello及HelloMBean,增加如下
這里的類Jack不僅實現了MBean介面,還繼承了。jack在這里創建並發送了一個消息包。
對HelloAgent做以下修改
我們利用jconsole調用jack的hi方法, 這里當jack發出消息後,Notification被廣播至所有的MBean,當有MBean屬於Hello類時則調用Hello的printHello()方法 。
在linux下利用jmx監控Tomcat,在catlina.sh中進行一些環境變零的配置
⑷ Java的相關技術
JDBC(Java Database Connectivity)提供連接各種關系資料庫的統一介面,作為數據源,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC為工具/資料庫開發人員提供了一個標準的API,據此可以構建更高級的工具和介面,使資料庫開發人員能夠用純Java API 編寫資料庫應用程序,同時,JDBC也是個商標名。 EJB(Enterprise JavaBeans)使得開發者方便地創建、部署和管理跨平台的基於組件的企業應用。 Java RMI(Java Remote Method Invocation)用來開發分布式Java應用程序。一個Java對象的方法能被遠程Java虛擬機調用。這樣,遠程方法激活可以發生在對等的兩端,也可以發生在客戶端和伺服器之間,只要雙方的應用程序都是用Java寫的。 Java IDL(Java Interface Definition Language) 提供與CORBA(Common Object Request Broker Architecture)的無縫的互操作性。這使得Java能集成異構的商務信息資源。 JNDI(Java Naming and Directory Interface)提供從Java平台到的統一的無縫的連接。這個介面屏蔽了企業網路所使用的各種命名和目錄服務。 JMAPI(Java Management API)為異構網路上系統、網路和服務管理的開發提供一整套豐富的對象和方法。 JMS(Java Message Service)提供企業消息服務,如可靠的消息隊列、發布和訂閱通信、以及有關推拉(Push/Pull)技術的各個方面。 JTS(Java transaction Service)提供存取事務處理資源的開放標准,這些事務處理資源包括事務處理應用程序、事務處理管理及監控。 JMF(Java Media Framework API),她可以幫助開發者把音頻、視頻和其他一些基於時間的媒體放到Java應用程序或applet小程序中去,為多媒體開發者提供了捕捉、回放、編解碼等工具,是一個彈性的、跨平台的多媒體解決方案。 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,關於這些組件體系結構的深入討論超出了本書的范圍。 JavaFXSun剛剛發布了JavaFX技術的正式版,它使您能利用JavaFX 編程語言開發富互聯網應用程序(RIA)。JavaFX Script編程語言(以下稱為JavaFX)是Sun微系統公司開發的一種declarative,staticallytyped(聲明性的、靜態類型)腳本語言。JavaFX技術有著良好的前景,包括可以直接調用Java API的能力。因為JavaFXScript是靜態類型,它同樣具有結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和發布單元,這些特性使得使用Java技術創建和管理大型程序變為可能。
JavaFX從它2007年發布以來,表現一直差強人意。Oracle收購了Sun之後,在JavaFX中投入了大量的精力進行推廣和更新。JavaFX比較出名的應用應該是在2010年溫哥華冬奧會上,調整了JavaFX中的很多概念,以及重新設計和實現了很多重要組件之後,得到的就是現在的JavaFX 2.0。JavaFX 2.0的beta版已經發布,正式版則定於2010年第3季度發布。JavaFX 2.0的新特性使得開發人員應該需要重新審視它在RIA開發領域中的位置。在很多情況下,JavaFX 2.0也會是不錯的選擇。 JMX(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統等植入
管理功能的框架。JMX可以跨越一系列異構操作系統平台、系統體系結構和網路傳輸協議,靈活的開發無縫集成的系統、網路和服務管理應用。 JPA(Java Persistence API),JPA通過JDK 5.0註解或XML(標准通用標記語言的子集)描述對象-關系表的映射關系,並將運行期的實體對象持久化到資料庫中。 JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。 用JSP開發的Web應用是跨平台的,既能在Linux下運行,也能在其他操作系統上運行。 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容器集成的強大而靈活的MVCWeb框架。【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是一個基於SunJ2EE平台的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】
JDiy 【Java極速開發框架. 開源】
JDiy是一款java極速開發框架,無需ORM,極少的代碼便可以完成資料庫的CRUD(增刪改查);
可同時用於javaEE或者javaSE開發環境;完美支持各大主流資料庫,如:MySQL, SQL Server, Oracle, DB2, PostgreSQL,SQLite;
同時JDiy內置一套精簡而不失強大的智能開發平台(開發者登錄後,隨心所欲地零代碼生成網站管理系
JFinal【Java極速WEB+ORM框架】
jfinal是基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言所有優勢的同時再擁有ruby、python、php等動態語言的開發效率!主要特點1.MVC架構,設計精巧,使用簡單 2.遵循COC原則,零配置,無xml 3.獨創Db + Record模式,靈活便利 4.ActiveRecord支持,使資料庫開發極致快速 5.自動載入修改後的java文件,開發過程中無需重啟web server 6.AOP支持,攔截器配置靈活,功能強大 7.Plugin體系結構,擴展性強 8.多視圖支持,支持FreeMarker、JSP、Velocity9.強大的Validator後端校驗功能 10.功能齊全,擁有struts2的絕大部分功能 11.體積小僅218K,且無第三方依賴
Quartz 【Java開源Job調度】
Quartz是OpenSymphony開源組織在Job scheling領域又一個開源項目,它可以與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為全球范圍內的中小型企業提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的全部領域,支持多組織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易於安裝、易於實施、易於使用。只需要短短幾個小時,您就可以使用申購-采購-發票-付款、報價-訂單-發票-收款、產品與定價、資產管理、客戶關系、供應商關系、員工關系、經營業績分析等強大功能了。
Apache MINA 【java開源socket框架】
ApacheMINA是一個網路應用程序框架,用來幫助用戶簡單地開發高性能和高可擴展性的網路應用程序。它提供了一個通過java NIO在不同的傳輸例如TCP/IP和UDP/IP上抽象的事件驅動的非同步API。 IntelliJ IDEA【Java開發工具】
IntelliJ IDEA是JetBrains公司的產品,比老一代Java開發工具Eclipse更漂亮,更智能。Google官方Android開發工具Android Studio就是基於intellij IDEA開發的。Intellij IDEA擁有出色的界面設計,使用Darculah黑色界面主題會讓你愛不釋手。在智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是超常的。IntelliJ IDEA分為商業版本,個人版本,與community社區版本。其中,community社區版本是免費的,但是功能性並不弱,對於學習者和個人開發者來說完全足夠了。
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來支持一些遠程信息的獲取,使用Apache 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平台由Java虛擬機(Java Virtual Machine)和Java應用編程介面(Application ProgrammingInterface、簡稱API)構成。Java應用編程介面為此提供了一個獨立於操作系統的標准介面,可分為基本部分和擴展部分。在硬體或操作系統平台上安裝一個Java平台之後,Java應用程序就可運行。Java平台已經嵌入了幾乎所有的操作系統。這樣Java程序可以只編譯一次,就可以在各種系統中運行。Java應用 編程介面已經從1.1x版發展到1.2版。常用的Java平台基於Java1.5,最近版本為Java1.8。
Java分為三個體系JavaSE(Java2 Platform Standard Edition,java平台標准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企業版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
Java SE Java SE(Java Platform,Standard Edition)。Java SE 以前稱為J2SE。它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的Java應用程序。Java SE 包含了支持Java Web 服務開發的類,並為Java Platform,Enterprise Edition(Java EE)提供基礎。 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 ME(Java Platform,Micro Edition)。這個版本以前稱為J2ME,也叫K-JAVA。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和列印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網路協議以及對可以動態下載的連網和離線應用程序的豐富支持。基於Java ME 規范的應用程序只需編寫一次,就可以用於許多設備,而且可以利用每個設備的本機功能。