⑴ java有什麼優點
Java技術有下列優點:簡單、面向對象、分布式、解釋執行、魯棒、安全、體系結構中立、可移植、高性能、多線程以及動態性。
1. 簡單
Java語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的任務,只需理解一些基本的概念,就可以用它編寫出適合於各種情況的應用程序。Java略去了運算符重載、多重繼承等模糊的概念,並且通過實現自動垃圾收集大大簡化了程序設計者的內存管理工作。另外,Java也適合於在小型機上運行,它的基本解釋器及類的支持只有40KB左右,加上標准類庫和線程的支持也只有215KB左右。
2. 面向對象
Java語言的設計集中於對象及其介面,它提供了簡單的類機制以及動態的介面模型。對象中封裝了它的狀態變數以及相應的方法,實現了模塊化和信息隱藏;而類則提供了一類對象的原型,並且通過繼承機制,子類可以使用父類所提供的方法,實現了代碼的復用。
3. 分布性
Java是面向網路的語言。通過它提供的類庫可以處理TCP/IP協議,用戶可以通過URL地址在網路上很方便地訪問其他對象。
4. 魯棒性
Java在編譯和運行程序時,都要對可能出現的問題進行檢查,以消除錯誤的產生。它提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。在編譯時,通過集成的面向對象的異常處理機制,Java提示出可能出現但未被處理的異常,幫助程序員正確地進行選擇以防止系統的崩潰。另外,Java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態運行時不匹配問題的出現。
5. 安全性
用於網路、分布環境下的Java必須防止病毒的入侵。Java不支持指針,一切對內存的訪問都必須通過對象的實例變數來實現,這樣就防止了程序員使用「特洛伊」木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產生的錯誤。
6. 體系結構中立
Java解釋器生成與體系結構無關的位元組碼指令,只要安裝了Java運行時系統,Java程序就可在任意處理器上運行。這些位元組碼指令對應於Java虛擬機中的表示,Java解釋器得到位元組碼後,對它進行轉換,使之能夠在不同的平台運行。
7. 可移植性
與平台無關的特性使Java程序可以方便地移植到網路上的不同機器。同時,Java的類庫中也實現了與不同平台的介面,使這些類庫可以移植。另外,Java編譯器是由Java語言實現的,Java運行時系統由標准C語言實現,這使得Java系統本身也具有可移植性。
8. 解釋執行
Java解釋器直接對Java位元組碼進行解釋執行。位元組碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。
9. 高性能
和其他解釋執行的語言如BASC、TCL不同,Java位元組碼的設計使之能很容易地直接轉換成對應於特定CPU的機器碼,從而得到較高的性能。
10. 多線程
多線程機制使應用程序能夠並行執行,而且同步機制保證了對共享數據的正確操作。通過使用多線程,程序設計者可以分別用不同的線程完成特定的行為,而不需要採用全局的事件循環機制,這樣就很容易實現網路上的實時交互行為。
11. 動態性
Java的設計使它適合於一個不斷發展的環境。在類庫中可以自由地加入新的方法和實例變數而不會影響用戶程序的執行。並且Java通過介面來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。
⑵ Java實習生工作需要具備哪些能力
結合企業對求職者的技能要求就給大家簡單分析一下。
宏觀方面
1)要精通多門開源技術,研究過struts spring等的源碼;
2)具有豐富的項目經驗,從頭到尾跟過幾個大項目,從需求調研到上線交付維護階段;
3)有過分布式系統的架構和開發經驗,對於跨系統的結構優化、數據存儲的性能指標等有豐富經驗。
微觀方面
1)熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉常用的Java API,包括集合框架、多線程(並發編程)、I/O(NIO)、Socket、JDBC、XML、反射等;
2)熟悉基於JSP和Servlet的Java Web開發,對Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫無腳本動態頁面;
3)熟練的使用HTML、CSS和JavaScript進行Web前端開發,熟悉jQuery和Bootstrap,對Ajax技術在Web項目中的應用有深入理解;
4)熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深入的理解。
⑶ Java語言主要特點有哪些
1.簡單
Java最初是為對家用電器進行集成控制而設計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現在以下三個方面:
1) Java的風格類似於C++,因而C++程序員是非常熟悉的。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程序員可以很快就掌握Java編程技術。
2) Java摒棄了C++中容易引發程序錯誤的地方,如指針和內存管理。
3) Java提供了豐富的類庫。
2.面向對象
面向對象可以說是Java最重要的特性。Java語言的設計完全是面向對象的,它不支持類似C語言那樣的面向過程的程序設計技術。Java支持靜態和動態風格的代碼繼承及重用。單從面向對象的特性來看,Java類似於Small Talk,但其它特性、尤其是適用於分布式計算環境的特性遠遠超越了Small Talk。
3.分布式
Java包括一個支持HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程序可憑借URL打開並訪問網路上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。為分布環境尤其是Internet提供的動態內容無疑是一項非常宏偉的任務,但Java的語法特性卻使我們很容易地實現這項目標。
4.健壯
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大縮短了開發Java應用程序的周期。Java提供Null指針檢測數組邊界檢測異常出口位元組代碼校驗。
5.結構中立
另外,為了建立Java作為網路的一個整體,Java將它的程序編譯成一種結構中立的中間文件格式。只要有Java運行系統的機器都能執行這種中間代碼。現在,Java運行系統有Solaris2.4(SPARC),Win32系統(Windows95和WindowsNT)等.Java源程序被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機上運行,由機器相關的運行調試器實現執行。
6.安全
Java的安全性可從兩個方面得到保證。一方面,在Java語言里,象指針和釋放內存等C++功能被刪除,避免了非法內存操作。另一方面,當Java用來創建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來,使它更安全。Java語言在你的機器上執行前,要經過很多次的測試。它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。
7.可移植的
這句話一直是Java程序設計師們的精神指標,也是Java之所以能夠受到程序設計師們喜愛的原因之一,最大的功臣就是JVM的技術。大多數編譯器產生的目標代碼只能運行在一 種CPU上(如Intel的x86系列),即使那些能支持多種CPU的編譯器也不能同時產生適合多 種CPU的目標代碼。如果你需要在三種CPU( 如x86、SPARC 和MIPS)上運行同一程序, 就必須編譯三次。
但JAVA編譯器就不同了。JAVA編譯器產生的目標代碼(J-Code) 是針對一種並不 存在的CPU--JAVA虛擬機(JAVA Virtual Machine),而不是某一實際的CPU。JAVA虛擬機能掩蓋不同CPU之間的差別,使J-Code能運行於任何具有JAVA虛擬機的機器上。
虛擬機的概念並不AVA 所 特 有 的:加州大學幾年前就提出了PASCAL虛擬機的概念;廣泛用於Unix伺服器的Perl腳本也是產生與機器無關的中間代碼用於執行。但針對Internet應用而設計的JAVA虛擬機的特別之處在於它能產生安全的不受病毒威脅的目標代碼。正是由於Internet對安全特性的特別要求才使得JVM能夠迅速被人們接受。 當今主 流的操作系統如OS/2、MacOS、Windows95/NT都已經或很快提供對J-Code的支持。
作為一種虛擬的CPU,JAVA 虛擬機對於源代碼(Source Code) 來說是獨立的。我們不僅可以用JAVA語言來生成J-Code,也可以用Ada95來生成。事實上,已經有了針對若干種源代碼的J-Code 編譯器,包括Basic、Lisp 和Forth。源代碼一經轉換成J-Code以後,JAVA虛擬機就能夠執行而不區分它是由哪種源代碼生成的。這樣做的結果就是CPU可移植性。 將源程序編譯為J-Code的好處在於可運行於各種機器上,而缺點是它不如本機代碼運行的速度快。
同體系結構無關的特性使得Java應用程序可以在配備了Java解釋器和運行環境的任何計算機系統上運行,這成為Java應用軟體便於移植的良好基礎。但僅僅如此還不夠。如果基本數據類型設計依賴於具體實現,也將為程序的移植帶來很大不便。例如在Windows3.1中整數(Integer)為16bits,在Windows95中整數為32bits,在DECAlpha中整數為64bits,在Intel486中為32bits。通過定義獨立於平台的基本數據類型及其運算,Java數據得以在任何硬體平台上保持一致。Java語言的基本數據類型及其表示方式如下:byte8-bit二進制補碼short16-bit二進制補碼int32-bit二進制補碼long64-bit二進制補碼float32-bitIEEE754浮點數double32-bitIEEE754浮點數char16-bitUnicode字元在任何Java解釋器中,數據類型都是依據以上標准具體實現的。因為幾乎目前使用的所有CPU都能支持以上數據類型、8~64位整數格式的補碼運算和單/雙精度浮點運算。Java編譯器本身就是用Java語言編寫的。Java運算系統的編制依據POSIX方便移植的限制,用ANSIC語言寫成。Java語言規范中也沒有任何"同具體實現相關"的內容。
8.解釋的
Java解釋器(運行系統)能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少,所以程序員可以在創建源程序上花上更多的時間。
9.高性能
如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鍾內可調用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什麼區別。
10.多線程
多線程功能使得在一個程序里可同時執行多個小任務。線程--有時也稱小進程--是一個大進程里分出來的小的獨立的進程。因為Java實現的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的交互性能和實時控制性能。當然實時控制性能還取決於系統本身(UNIX,Windows,Macintosh等),在開發難易程度和性能上都比單線程要好。任何用過當前瀏覽器的人,都感覺為調一副圖片而等待是一件很煩惱的事情。在Java里,你可用一個單線程來調一副圖片,而你可以訪問HTML里的其它信息而不必等它。
11.動態
Java的動態特性是其面向對象設計方法的發展。它允許程序動態地裝入運行過程中所需要的類,這是C++語言進行面向對象程序設計所無法實現的。在C++程序設計過程中,每當在類中增加一個實例變數或一種成員函數後,引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從如下幾方面採取措來解決這個問題。Java編譯器不是將對實例變數和成員函數的引用編譯為數值引用,而是將符號引用信息在位元組碼中保存下傳遞給解釋器,再由解釋器在完成動態連接類後,將符號引用信息轉換為數值偏移量。這樣,一個在存儲器生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定的。這樣,對類中的變數和方法進行更新時就不至於影響現存的代碼。解釋執行位元組碼時,這種符號信息的查找和轉換過程僅在一個新的名字出現時才進行一次,隨後代碼便可以全速執行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網路中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個升級的或全新的協議的方法。如果你的系統運行Java程序時遇到了不知怎樣處理的程序,沒關系,Java能自動下載你所需要的功能程序。四.與C和C++語言的異同 Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++還是被大家所接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一個很有用的功能,Java去掉了以下幾個C和C++功能和特徵:指針運算結構typedefs#define需要釋放內存全局變數的定義這個功能都是很容易引起錯誤的地方。
12. Unicode
Java使用Unicode作為它的標准字元,這項特性使得Java的程序能在不同語言的平台上都能撰寫和執行。簡單的說,你可以把程序中的變數、類別名稱使用中文來表示<注>,當你的程序移植到其它語言平台時,還是可以正常的執行。Java也是目前所有計算機語言當中,唯一天生使用Unicode的語言。
⑷ 如何學好Java框架,Java框架有那些
Java是現階段中國互聯網公司中,覆蓋度最廣的研發語言,掌握了Java技術體系,不管在成熟的大公司,快速發展的公司,還是創業階段的公司,都能有立足之地。
學習Java技術體系,設計模式,流行的框架與組件是必不可少的:
常見的設計模式,編碼必備
Spring5,做應用必不可少的最新框架。
MyBatis,玩資料庫必不可少的組件。
二:工程化與工具
工欲善其事必先利其器,不管是小白,還是資深開發,玩Java技術體系,選擇好的工具,提升開發效率和團隊協作效率,是必不可少的:
Maven,項目管理
Jenkins,持續集成
Sonar,代碼質量管理
Git,版本管理
三:分布式架構
高並發,高可用,海量數據,沒有分布式的架構知識肯定是玩不轉的:
分布式架構原理
分布式架構策略
分布式中間件
分布式架構實戰
四:微服務架構
業務越來越復雜,服務分層,微服務架構是架構升級的必由之路,Java技術體系,和微服務相關的技術有哪些呢?
微服務框架
Spring Cloud
Docker與虛擬化
微服務架構
五:性能優化
任何脫離細節的ppt架構師都是耍流氓,向上能運籌帷幄,向下能解決一線性能問題,Java技術體系,需要了解:
性能指標體系
JVM調優
Web調優
DB調優
六:底層知識
從架構設計,到應用層調優,再深入了解底層原理,扎實的Java基本功才能讓自己變為掃地神僧:
內存模型
並發模式
線程模型
鎖細節
⑸ Java語言的特點
一、Java語言特點
Java是一種跨平台,適合於分布式計算環境的面向對象編程語言。
具體來說,它具有如下特性:
簡單性、面向對象、分布式、解釋型、可靠、安全、平台無關、可移植、高性能、多線程、動態性等。
下面我們將重點介紹Java語言的面向對象、平台無關、分布式、多線程、可靠和安全等特性。
1.面向對象
面向對象其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現實世界中任何實體都可歸屬於某類事物,任何對象都是某一類事物的實例。如果說傳統的過程式編程語言是以過程為中心以演算法為驅動的話,面向對象的編程語言則是以對象為中心以消息為驅動。用公式表示,過程式編程語言為:程序=演算法+數據;面向對象編程語言為:程序=對象+消息。
所有面向對象編程語言都支持三個概念:封裝、多態性和繼承,Java也不例外。現實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數據,行為表示對象的方法(其作用是處理數據或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數據和方法聯在一起形成一個整體。可以說,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為Java無全程變數,無主函數,在Java中絕大部分成員是對象,只有簡單的數字類型、字元類型和布爾類型除外。而對於這些類型,Java也提供了相應的對象類型以便與其他對象交互操作。
多態性就是多種表現形式,具體來說,可以用「一個對外介面,多個內在實現方法」表示。舉一個例子,計算機中的堆棧可以存儲各種格式的數據,包括整型,浮點或字元。不管存儲的是何種數據,堆棧的演算法實現是一樣的。針對不同的數據類型,編程人員不必手工選擇,只需使用統一介面名,系統可自動選擇。運算符重載(operatoroverload)一直被認為是一種優秀的多態機制體現,但由於考慮到它會使程序變得難以理解,所以Java最後還是把它取消了。
繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的「父親」,而這些子實體則是汽車的「孩子」。Java提供給用戶一系列類(class),Java的類有層次結構,子類可以繼承父類的屬性和方法。與另外一些面向對象編程語言不同,Java只支持單一繼承。
2�平台無關性
Java是平台無關的語言是指用Java寫的應用程序不用修改就可在不同的軟硬體平台上運行。平台無關有兩種:源代碼級和目標代碼級。C和C++具有一定程度的源代碼級平台無關,表明用C或C++寫的應用程序不用修改只需重新編譯就可以在不同平台上運行。
Java主要靠Java虛擬機(JVM)在目標碼級實現平台無關性。JVM是一種抽象機器,它附著在具體操作系統之上,本身具有一套虛機器指令,並有自己的棧、寄存器組等。但JVM通常是在軟體上而不是在硬體上實現。(目前,SUN系統公司已經設計實現了Java晶元,主要使用在網路計算機NC上。
另外,Java晶元的出現也會使Java更容易嵌入到家用電器中。)JVM是Java平台無關的基礎,在JVM上,有一個Java解釋器用來解釋Java編譯器編譯後的程序。Java編程人員在編寫完軟體後,通過Java編譯器將Java源程序編譯為JVM的位元組代碼。任何一台機器只要配備了Java解釋器,就可以運行這個程序,而不管這種位元組碼是在何種平台上生成的。另外,Java採用的是基於IEEE標準的數據類型。通過JVM保證數據類型的一致性,也確保了Java的平台無關性。
Java的平台無關性具有深遠意義。首先,它使得編程人員所夢寐以求的事情(開發一次軟體在任意平台上運行)變成事實,這將大大加快和促進軟體產品的開發。其次Java的平台無關性正好迎合了「網路計算機」思想。如果大量常用的應用軟體(如字處理軟體等)都用Java重新編寫,並且放在某個Internet伺服器上,那麼具有NC的用戶將不需要佔用大量空間安裝軟體,他們只需要一個
Java解釋器,每當需要使用某種應用軟體時,下載該軟體的位元組代碼即可,運行結果也可以發回伺服器。目前,已有數家公司開始使用這種新型的計算模式構築自己的企業信息系統。
3�分布式
分布式包括數據分布和操作分布。數據分布是指數據可以分散在網路的不同主機上,操作分布是指把一個計算分散在不同主機上處理。
Java支持WWW客戶機/伺服器計算模式,因此,它支持這兩種分布性。對於前者,Java提供了一個叫作URL的對象,利用這個對象,你可以打開並訪問具有相同URL地址上的對象,訪問方式與訪問本地文件系統相同。對於後者,Java的applet小程序可以從伺服器下載到客戶端,即部分計算在客戶端進行,提高系統執行效率。
Java提供了一整套網路類庫,開發人員可以利用類庫進行網路程序設計,方便得實現Java的分布式特性。
4�可靠性和安全性
Java最初設計目的是應用於電子類消費產品,因此要求較高的可靠性。Java雖然源於C++,但它消除了許多C++不可靠因素,可以防止許多編程錯誤。首先,Java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發現方法調用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內存的非法訪問;第三,Java的自動單元收集防止了內存丟失等動態內存分配導致的問題;第四,Java解釋器運行時實施檢查,可以發現數組和字元串訪問的越界,最後,Java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任務便於恢復。
由於Java主要用於網路應用程序開發,因此對安全性有較高的要求。如果沒有安全保證,用戶從網路下載程序執行就非常危險。Java通過自己的安全機制防止了病毒程序的產生和下載程序對本地系統的威脅破壞。當Java位元組碼進入解釋器時,首先必須經過位元組碼校驗器的檢查,然後,Java解釋器將決定程序中類的內存布局,隨後,類裝載器負責把來自網路的類裝載到單獨的內存區域,避免應用程序之間相互干擾破壞。最後,客戶端用戶還可以限制從網路上裝載的類只能訪問某些文件系統。
上述幾種機制結合起來,使得Java成為安全的編程語言。
5�多線程
線程是操作系統的一種新概念,它又被稱作輕量進程,是比傳統進程更小的可並發執行的單位。
C和C++採用單線程體系結構,而Java卻提供了多線程支持。
Java在兩方面支持多線程。一方面,Java環境本身就是多線程的。若干個系統線程運行負責必要的無用單元回收,系統維護等系統級操作;另一方面,Java語言內置多線程式控制制,可以大大簡化多線程應用程序開發。Java提供了一個類Thread,由它負責啟動運行,終止線程,並可檢查線程狀態。Java的線程還包括一組同步原語。這些原語負責對線程實行並發控制。利用Java的多線程編程介面,開發人員可以方便得寫出支持多線程的應用程序,提高程序執行效率。必須注意地是,Java的多線程支持在一定程度上受運行時支持平台的限制。例如,如果操作系統本身不支持多線程,Java的多線程特性可能就表現不出來。
二、Java小程序和應用程序
用Java可以寫兩種類型的程序:小程序(又叫JavaApplet)和應用程序(JavaApplication)。小程序是嵌入在HTML文檔中的Java程序;而Java應用程序是從命令行運行的程序。對Java而言,Java小程序的大小和復雜性都沒有限制。事實上,Java小程序有些方面比Java應用程序更強大。但是由於目前Internet通訊速度有限,因此大多數小程序規模較小。小程序和應用程序之間的技術差別在於運行環境。
Java應用程序運行在最簡單的環境中,它的唯一外部輸入就是命令行參數。另一方面,Java小程序則需要來自Web瀏覽器的大量信息:它需要知道何時啟動,何時放入瀏覽器窗口,何處,何時激活關閉。由於這兩種不同的執行環境,小程序和應用程序的最低要求不同。
由於WWW使小程序的發布十分便利,因此小程序更適合作為Internet上的應用程序。相反,非網路系統和內存較小的系統更適合用Java應用程序而較少用Java小程序實現。另外,Java應用程序也很容易以Internet為基礎環境,事實上有些優秀的Java應用程序正是如此。
⑹ 如何提高JAVA系統性能指標
我學習java也有一段時間了,看到你的迷惑彷彿看到了過去的我。呵呵 切入正題首先回答你的為題 問:怎樣提高java的編程能力????答:程序最主要的是動手能力,你能肯定你書上的例子全部敲過一遍嗎?課後的習題能全部弄懂了么?如果你回答是,那麼恭喜你,你可以考慮選擇一個方向了。至於是J2EE還是J2ME著看你自己喜好吧!如果你沒有把課本上的例子全部敲上一遍,那還是去練練多敲敲代碼吧!高手的編程能力都是一下一下敲出來的,代碼敲多了自然就熟練了。能看懂程序而不去敲一遍和沒看是一樣的。 至於你現在想接項目可以說是沒什麼希望。現在該選擇一個方向了。J2EE OR J2ME 不管選擇哪個,等你真正了解你選擇的方向你會發現現在的你 要學的東西還有很多。如果你真想選擇java 去網上 找找J2EE 和J2ME 的信息吧 相信你會有很大的收獲!也希望你不要的迷茫,我就在迷茫中浪費了很多時間!現在想起來真後悔,當時怎麼沒人點撥我一下。 最後說一句,軟體是大的概念,桌面程序只是他一種。
⑺ Java開發人員應當具備的哪些基本素質
1、積極,主動性:要主動的去學習,主動的去發現問題,跟進問題,其實很多技術類的問題都不是問題了。這個放在第一位的素質。
2、有風險提前拋出來:做項目肯定有風險,沒有風險項目也就沒有挑戰了。需要每個開發同學能夠主動的發現風險,並提出規避方案,如果沒有規避方案,那提出來也行。
3、區分主次,合理規劃:對於系統中的功能進行核心/非核心、主流程/非主流程、高優先順序/低優先順序的劃分。優先完成出核心、主流程、高優先順序的部分。避免鋪地毯式的一步一步的逐步推進。
4、新的想法打算用在項目中的,自己提前搞demo驗證過:有些同學,包括我自己,都會嘗試一些新東西,例如新框架,新的工具等。但是有個前提,不要在項目開始或者進行中的時候才考慮用新東西試一下,項目一般都是有時間限制要求的。項目一般有預研階段,這個時候,如果有新的想法,可以嘗試做一些例子。為啥要這樣呢?因為新東西有學習成本,這個倒是其次,有些新東西有坑在裡面,因為這個世界沒有銀彈的方案。
5、主動承擔沒人負責的模塊:有些模塊的劃分,可能沒法劃分到具體的人,因為可能是兩個模塊銜接的,這時候,如果時間允許,建議開發同學主動的承擔一些沒人負責的模塊。例如兩個模塊的銜接、整體頁面的安全方案考慮、單元測試的集成、持續集成等。
6、自己負責的部分完成之後幫助其他同事:項目內部人員的技術素質可能是參差不齊的,有些東西可能熟悉的人幾個小時就能搞定,有的可能需要一天時間,這個時候,如果你熟悉一個模塊,而另外一個同事不熟悉,你就可以幫助一下了。
7、代碼注釋充分:由於我們參與的大多是業務項目,有個特點就是復雜。這時候,就需要有充分的注釋,當然是非常必要的環節才加。至於一看就能懂的,那就沒有必要添加了。
8、代碼自測充分,高質量的完成自己負責的模塊:這個必須提一下,開發同學代碼編寫好了之後,需要提交給測試同學進行測試,有時候測試還分幾輪。這時候,bug的情況體現了代碼的質量,而質量的保證,除了經驗和代碼review之外,還需要自己完成一些自測的事情。尤其是主流程必須有,還有就是自己覺得一些邊界的條件下。自測充分之後,後續bug就少,返工就少,討論問題就少,省了很多時間的。
9、暢通的溝通氛圍:項目中有各個角色,溝通必不可少,討論過程中,注重溝通的方式,要做到對事不對人。
10、重構:寫代碼就像寫文章,不是一蹴而就的。需要反復的修改和重構。當你發現代碼重復、類結構不合理的時候,或者自我對代碼感覺不太好的時候,就去重構。
11、編碼前充分設計:編碼前寧可多花時間進行方案的詳細設計,千萬不要一接到需求就進行編碼。提前進行詳細設計,會縮短編碼的時間,也會降低bug的發生。
12、學會換位思考:一個項目是需要多方協作的,不同的人必然會有不同的想法,因為大家的知識積累以及經驗積累肯定不一樣,在大家想法不一致的時候,可以更多的是做個換位思考,先理解對方的觀點,了解這個觀點背後的原因,然後再來反觀自己的想法,同時在互相理解的基礎上,做事情的默契和結果也會有很大的提升;
•在協助中多一些換位思考,多站在對方的角度思考和理解問題,最後大家在協作中能夠實現共贏;
•開發功能之前站在用戶的角度去思考,假如你作為業務用戶,你對這個功能會有什麼樣的需求。
13、責任心:這個放在最後,其實並不是說排名在最後,這個我認為也是很重要的,試想一個沒有責任性的人寫出來的代碼,別人能信得過嗎。寫代碼前要進行深度的思考。寫完後要對自己的代碼進行充分的測試。上線前需要反復確認自己的代碼有沒有問題
⑻ java高級工程師基本標準是什麼
我理解是這樣
1.技術廣度方面
至少要精通多門開源技術吧,研究過struts\spring等的源碼。
2.項目經驗方面
從頭到尾跟過幾個大項目,頭是指需求階段,包括需求調研。
尾是指上線交付之後,包括維護階段。
3.架構經驗方面
有過分布式系統的架構和開發經驗。對於跨系統的結構優化,數據存儲的性能指標等有豐富經驗。什麼緩存啊、資料庫的垂直切分什麼的,業務的抽象和水平拆分啊,這些應該都輕車熟路吧。
4.行業領域方面
最起碼得精通一到兩門業務吧,所謂精通,就是比如做金融證券業務的,至少等當半個經融分析師。做電力業務的,至少等當半個電力工程師。
5.個人修為
有自己一些獨到的見解,不會人雲亦雲啦。
⑼ Java學到什麼程度才能叫精通
如果要談精通Java ,有一個特別直接的方法,那就是考察工程師是否具有:
「快速構建開發框架的能力」。
例如下面這個系統:
這是一個典型的web應用(基於Java)。雖然就整個系統搭建來說,是架構師的責任。但其中的深色部分,是一個典型Java應用框架。以此為標准,框架的搭建能力,可以用來考察軟體工程師是否真的精通Java。
在一些新項目中,項目經理和架構師會根據業務需求從頂層設計架構。待架構穩定後,會進入實際的編碼階段。但在更大規模的業務編碼前,首先要搭建好系統的基本框架,而這個框架一般會交給團隊中最資深的工程師(當然精通Java)去做。
具體框架的搭建時間一定不能太長,因為整個開發團隊都在等待。
同時,因為這個框架是長期開發的基礎,所以質量一定要有保障。
搭建框架的技術指標,一句話:又快又好。
搭建這樣的框架,以我的經驗,團隊能接受的時間一般是2周,最多不能超過3周。
這個框架如果由一個初級工程師來搭建,因為缺少長期的積累,必然需要大量的時間。但除了時間,更糟糕的是質量。
因為一個好的框架絕不是靠腦子憑空想出來的,更應該實踐磨練出來的。而初級工程師因為缺少實踐錘煉,踩過的坑不多,吃過的虧少。縱然理論再豐富,天資再聰穎,也無法在沙地上憑空打出扎實的地基。
而且,實踐中,即使有很多工程師有豐富的實踐經驗,但也不意味隨著時間推進,老工程師就天然具備搭建高質量框架的能力。因為實踐背後,更需要深刻的洞察力,和筆耕不輟的總結。
現實中,一個大型的項目,代碼量必然是巨大的。即使是當初設計再精細,但隨著開發的不斷推進,腐敗的引入是無法避免的,其中一個顯著特徵就是模塊之間的耦合不斷增加。
用一個比喻來形容,隨著時間發展,整個軟體系統就像人體一樣,血肉筋骨都粘合在了一塊。對軟體工程師來說,要從這樣的系統中提取出凝練的框架,就像對一個高水平的外科醫生要求的那樣。在理論上要保持絕對的精通,就像醫生對解刨學的掌握。同時還有有極強的編碼能力,就像醫生握手術刀的靈巧雙手一樣。用一句話來形容一流的Java工程師(醫生也是這樣),那就是:「鷹眼、獅心,女人手」。
但是,軟體工程師和醫生還有一點不同,那就是對速度的追求。因為搭建框架的工作是整個團隊開發工作的前置階段。
而要提高框架搭建的速度,除了日常多思考,多總結,更要做到「未雨綢繆」,提前布局。
以我為例,日常的開發中,對每個經手的大型項目。除了通過不斷的重構,來保持整個框架的清晰外,我還會嘗試把每個系統中的框架單獨剝離出來。這樣的做法,除了避免框架被污染的同時,也不斷豐富了屬於我個人的「架構模式」庫。
這樣的做法,一則在面臨新項目時,極大的提高了項目的推進速度。另一方面,也極大的提高了個人的技術自信度,以及職業安全感。
⑽ 什麼是 Java
Java,是一種可以撰寫跨平台應用軟體的物件導向的程式語言,由Sun公司的詹姆斯·高斯林(James Gosling)等人於1990年代初開發。它最初被命名為Oak,目標設定在家用電器等小型系統的程式設計語言,來解決諸如電視機、電話、鬧鍾、烤麵包機等家用電器的控制和通訊問題。由於這些智慧型家電的市場需求沒有預期的高,Sun放棄了該項計劃。就在Oak幾近失敗之時,隨著網際網路的發展,Sun看到了Oak在電腦網路上的廣闊應用前景,於是改造了Oak,在1995年5月以「Java」的名稱正式發布了。Java伴隨著網際網路的迅猛發展而發展,逐漸成為重要的網路程式語言。
Java程式語言的風格十分接近C++語言。繼承了C++ 語言物件導向技術的核心,Java舍棄了C++語言中容易引起錯誤的指標(以參照取代)、運算符過載(operator overloading)、多重繼承(以介面取代)等特性,增加了垃圾回收器功能用於回收不再被參照的物件所佔據的內部記憶體空間。在Java SE 1.5版本中Java又引入了泛型程式設計(Generic Programming)、型式安全的列舉、不定長參數和自動裝/拆箱等語言特性。
Java不同於一般的編譯執行電腦語言和解釋執行電腦語言。它首先將原始碼編譯成位元組碼(bytecode),然後依賴各種不同平台上的虛擬機器來解釋執行位元組碼,從而實作了「一次編譯、到處執行」的跨平台特性。不過,這同時也在一定程度上降低了Java程式的執行效率。但在J2SE1.4.2發布後,Java的執行速度有了大幅提升。
與傳統程式不同Sun公司在推出Java之際就將其作為一種開放的技術。全球數以萬計的Java開發公司被要求所設計的Java軟體必須相互相容。「Java語言靠群體的力量而非公司的力量」是Sun公司的口號之一,並獲得了廣大軟體開發商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。
Sun公司對Java程式語言的解釋是:Java程式語言是個簡單、物件導向、分散式、解釋性、健壯、安全與系統無關、可移植、高性能、多執行緒和動態的語言。
Java平台是基於Java語言的平台。這樣的平台目前非常流行,因此微軟公司推出了與之競爭的.NET平台以及模仿Java的C#語言。