搜尋
首頁Javajava教程成為Java工程師有哪些要求?

成為Java工程師有哪些要求?

Jul 26, 2017 pm 04:48 PM
java需要

1.Core Java,就是Java基礎、JDK的類別庫,很多童鞋都會說,JDK我懂,但是懂還不足夠,知其然還要知其所以然,JDK的源代碼寫的非常好,要經常查看,對使用頻繁的類,例如String,集合類(List,Map,Set)等資料結構要知道它們的實現,不同的集合類有什麼區別,然後才能知道在一個具體的場合下使用哪個集合類別更適合、更有效率,這些內容直接看原始程式碼就OK了

2.多執行緒並發編程,現在並發幾乎是寫服務端程式必須的技術,那對Java中的多線程就要有足夠的熟悉,包括物件鎖定機制、synchronized關鍵字,concurrent套件都要非常熟悉,這部分推薦你看看《Java並發程式設計實踐》這本書,講解的很詳細

3.I/O,Socket編程,首先要熟悉Java中Socket編程,以及I/O包,再深入下去就是Java NIO,再深入下去是操作系統底層的Socket實現,了解Windows和Linux中是怎麼實現socket的

4.JVM的一些知識,不需要熟悉,但是需要了解,這是Java的本質,可以說是Java的母體, 了解之後眼界會更寬闊,比如Java內存模型(會對理解Java鎖、多執行緒有幫助)、字節碼、JVM的模型、各種垃圾收集器以及選擇、JVM的執行參數(優化JVM)等等,這些知識在《深入Java虛擬機》這本書中都有詳盡的解釋,或者去oracle網站上查看具體版本的JVM規範.

5.一些常用的設計模式,比如單例、模板方法、代理、適配器等等,以及在Core Java和一些Java框架裡的具體場景的實現,這個可能需要慢慢積累,先了解有哪些使用場景,見得多了,自己就自然而然會去用。

6.常用資料庫(Oracle、MySQL等)、SQL語句以及一般的最佳化

7.JavaWeb開發的框架,例如Spring、iBatis等框架,同樣他們的原理才是最重要的,至少要知道他們的大致原理。

8.其他一些有名的用的比較多的開源框架和包,Netty網絡框架,Apache common的N多包,Google的Guava等等,也可以經常去Github上找一些代碼看看。

宏觀:

1.技術廣度方面
至少要精通多門開源技術吧,研究過struts\spring等的原始碼。

2.專案經驗面
從頭到尾跟過幾個大項目,頭是指需求階段,包括需求調查。
尾是指上線交付之後,包括維護階段。

3.架構經驗面
有過分散式系統的架構和開發經驗。對於跨系統的結構優化,資料儲存的效能指標等有豐富經驗。什麼緩存啊、資料庫的垂直切分什麼的,業務的抽象和水平拆分啊,這些應該都輕車熟路吧。

4.產業領域面向
最起碼得精通一到兩門業務吧,所謂精通,就是比如做金融證券業務的,至少等當半個經融分析師。做電力業務的,至少等當半個電力工程師。

5.個人修為
有自己一些獨到的見解,不會人雲亦雲啦。

微觀上:

1.你需要精通物件導向分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該要十分了解UML,尤其是class,object,interaction以及statediagrams。


2.你需要學習JAVA語言的基礎知識以及它的核心類別庫(collections,serialization,streams,networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。


3.你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類別文件並且明白一些基本的彙編指令。


4.如果你將要寫客戶端程序,你需要學習WEB的小應用程式(applet),必需掌握GUI設計的思想和方法,以及桌面程式的SWING,AWT, SWT。你也應該對UI部件的JAVABEAN組件模式有所了解。 JAVABEANS也被應用在JSP中以把業務邏輯從表現層中分離出來。


5.你需要學習java資料庫技術,如JDBCAPI並且會使用至少一種persistence/ORM架構,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(國產JDO紅廠軟體)或iBatis 。


6.你也應該了解物件關係的阻抗失配的意義,以及它是如何影響業務物件的與關聯式資料庫的交互,和它的運作結果,還需要掌握不同的資料庫產品運用,例如:oracle,mysql,mssqlserver。


7.你需要學習JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,codesigning, digitalsignatures,cryptography,certification,Kerberos,以及其他)還有不同的安全/認證API ,例如JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS (JavaGeneralSecurityService)。


8.你需要學習Servlets,JSP,以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries。


9.你需要熟悉主流的網頁框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他們下面的涉及模式,如MVC/MODEL2。


10.你需要學習如何使用及管理WEB伺服器,例如tomcat,resin,Jrun,並且知道如何在其基礎上擴展和維護WEB程式。


11.你需要學習分散式物件以及遠端API,例如RMI和RMI/IIOP。


12.你需要掌握各種流行中間件技術標準和與java結合實現,例如Tuxedo、CROBA,當然也包括javaEE本身。


13.你需要學習最少一種的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。


14.你應該學習如何利用JAVAAPI和工具來建立WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries),或JWSDP(JavaWebServicesDeveloperPackJava)。


15.你需要學習一門輕量級應用程式框架,例如Spring,PicoContainer,Avalon,以及它們的IoC/DI風格(setter,constructor,interfaceinjection)。


16.你需要熟悉不同的J2EE技術,例如JNDI(JavaNamingandDirectoryInterface),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX (JavaManagementeXMailsions),以及Java。


17.你需要學習企業級JavaBeans(EJB)以及它們的不同元件模式:Stateless/StatefulSessionBeans,EntityBeans(包含Bean- ManagedPersistence[BMP]或Container-ManagedPersistence[CMP]和它的EJB-QL),或Message-DrivenBeans(MDB)。


18.你需要學習如何管理與配置一個J2EE應用程式伺服器,如WebLogic,JBoss等,並且利用它的附加服務,例如簇類,連接池以及分散式處理支援。你還需要了解如何在它上面封裝和配置應用程式並且能夠監控、調整它的效能。


19.你需要熟悉面向方面的程式設計以及面向屬性的程式設計(這兩個都被很容易混淆的縮寫為AOP),以及他們的主流JAVA規格和執行。例如AspectJ和AspectWerkz。


20.你需要熟悉對不同有用的API和frame work等來為你服務。例如Log4J(logging/tracing),Quartz (scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching), Lucene(full-textsearch),JakartaCommons等等。


21.如果你將要對接或正和舊的系統或本機平台,你需要學習JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)。

 

22.你需要熟悉JINI技術以及與它相關的分散式系統,例如掌握CROBA。


23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。


24.你應該要熟練一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或Eclipse。 (有些人喜歡VI或EMACS來寫文件。隨便你用什麼了:)


25.JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉程式碼產生工具,例如XDoclet。


26.你需要熟悉一種單元測試系統(JNunit),並且學習不同的生成、部署工具(Ant,Maven)。


27.你需要熟悉一些在JAVA開發中常用到的軟體工程流程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。


28.你需要能夠深入了解加上熟練操作和配置不同的作業系統,例如GNU/linux,sunsolaris,macOS等,做為跨平台軟體的開發者。


29.你還需要緊跟java發展的步伐,例如現在可以深入的學習javaME,以及各種java新規範,技術的運用,如新起的web富客戶端技術。


30.你必需要對opensource有所了解,因為至少java的許多技術直接是靠開源來驅動發展的,如java3D技術。

以上是成為Java工程師有哪些要求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

您如何測試Java應用程序的平台兼容性?您如何測試Java應用程序的平台兼容性?May 01, 2025 am 12:09 AM

效率testjavaapplicationsforplatformcompatibility oftheSesteps:1)setUpautomatedTestingTestingActingAcrossMultPlatFormSusingCitoolSlikeSlikeJenkinSorgithUbactions.2)contuctualtemualtemalualTesteTESTENRETESTINGINREALHARTWARETOLEALHARDOELHARDOLEATOCATCHISSUSESUSEUSENINCIENVIRENTMENTS.3)schictcross.3)schoscross.3)

Java編譯器(Javac)在實現平台獨立性中的作用是什麼?Java編譯器(Javac)在實現平台獨立性中的作用是什麼?May 01, 2025 am 12:06 AM

Java編譯器通過將源代碼轉換為平台無關的字節碼,實現了Java的平台獨立性,使得Java程序可以在任何安裝了JVM的操作系統上運行。

在平台獨立性的平台獨立性上使用字節碼優於本機代碼的優點是什麼?在平台獨立性的平台獨立性上使用字節碼優於本機代碼的優點是什麼?Apr 30, 2025 am 12:24 AM

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允許CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java真的100%獨立於平台嗎?為什麼或為什麼不呢?Java真的100%獨立於平台嗎?為什麼或為什麼不呢?Apr 30, 2025 am 12:18 AM

Java不能做到100%的平台獨立性,但其平台獨立性通過JVM和字節碼實現,確保代碼在不同平台上運行。具體實現包括:1.編譯成字節碼;2.JVM的解釋執行;3.標準庫的一致性。然而,JVM實現差異、操作系統和硬件差異以及第三方庫的兼容性可能影響其平台獨立性。

Java的平台獨立性如何支持代碼可維護性?Java的平台獨立性如何支持代碼可維護性?Apr 30, 2025 am 12:15 AM

Java通過“一次編寫,到處運行”實現平台獨立性,提升代碼可維護性:1.代碼重用性高,減少重複開發;2.維護成本低,只需一處修改;3.團隊協作效率高,方便知識共享。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。