[問題] Java學習要有的30個目標,請高手改成C#
看到此篇文章,
http://tech.c114.net/501/a249241.html
就想把Java/Sun的技術改成C#/Microsoft,
那麼相對應的技術有哪些?
底下隨意查的,
再請高手補充與校正.
1.你需要精通面向對象分析與設計(OOA/OOD)、涉及模式(GOF,J2EE DP)以及綜合模式。
你應該十分了解UML,尤其是class,object,interaction以及state diagrams。
[.Net DP]
[模式]
ASP .NET Scriptlet Pattern
http://wiki.dabutek.com/(S(t0suon450f4x105503yfr1e0))/ScriptletPattern.ashx
Coding Patterns
http://www.codeproject.com/KB/architecture/codedompatterns.aspx
C# Design Patterns
http://www.java2s.com/Tutorial/CSharp/0500__Design-Patterns/Catalog0500__Design-Patterns.htm
http://www.java2s.com/Code/CSharp/Design-Patterns/CatalogDesign-Patterns.htm
2.你需要學習JAVA語言的基礎知識以及它的核心類庫
(
collections,
serialization,
streams,
networking,
multithreading,
reflection,
event,
handling,
NIO,
localization,
以及其他
)。
[collections]
http://www.java2s.com/Code/CSharp/Collections-Data-Structure/CatalogCollections-Data-Structure.htm
[serialization]]
http://www.java2s.com/Code/CSharp/File-Stream/Serialization.htm
[streams]
http://www.java2s.com/Code/CSharp/File-Stream/CatalogFile-Stream.htm
[networking]
http://www.java2s.com/Tutorial/CSharp/0580__Network/Catalog0580__Network.htm
[multithreading]
http://www.java2s.com/Code/CSharp/Thread/CatalogThread.htm
[reflection]
http://www.java2s.com/Code/CSharp/Reflection/CatalogReflection.htm
[event]
http://www.java2s.com/Code/CSharp/Event/CatalogEvent.htm
[handling]
http://www.java2s.com/Code/CSharp/Language-Basics/Event-Handler.htm
[NIO]
http://msdn.microsoft.com/zh-tw/library/system.net.networkinformation.networkinterface(VS.85).aspx
[localization]
http://www.java2s.com/Tutorial/CSharp/0440__I18N-Internationalization/Catalog0440__I18N-Internationalization.htm
[核心類庫]
Base Class Library (BCL)
Microsoft Foundation Classes (MFC)
Active Template Library (ATL)
Windows Template Library (WTL)
3.你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。
你應該有能力反編譯一個類文件並且明白一些基本的彙編指令。
[VM]
CIL
http://en.wikipedia.org/wiki/Common_Language_Runtime
[垃圾回收的基本工作機制]
http://msdn.microsoft.com/zh-tw/library/dd229208.aspx
[反編譯]
.NET的反組譯程式 Reflector
http://catchtest.pixnet.net/blog/post/23276469
MSIL 反組譯工具 (Ildasm.exe)
http://msdn.microsoft.com/zh-tw/library/f7dy01k1(VS.80).aspx
4.如果你將要寫客戶端程式,你需要學習WEB的小應用程式(applet),
必需掌握GUI設計的思想和方法,以及桌面程式的SWING,AWT,SWT。
你還應該對UI部件的JAVA BEAN組件模式有所了解。
JAVA BEANS也被應用在JSP中以把業務邏輯從表現層中分離出來。
[WEB的小應用程式]
Active X
[GUI設計]
Windows Form
[BEANS]
Windows DNA?
http://zh.wikipedia.org/zh-tw/Windows_DNA
前端使用者介面層
Internet Explorer:Web 的前端介面,使用ASP、HTML、DHTML與JavaScript等程式與標記語言。
Windows應用程式:Windows 前端介面,使用 Visual Basic、Win32 API 或 MFC 等開發。
Microsoft Office應用程式:與 Windows 前端介面相同,但可利用 Add-ins(增益集)來連接後端。
應用程式伺服器層
COM+:Windows 2000 中,MTS 的強化服務,作為應用程式元件的主行程。
MTS:Windows NT 中,作為應用程式元件主行程之應用程式伺服器。
MSMQ:處理大量資料之佇列執行之中介伺服器。
DCOM:前端應用程式與應用程式伺服器間的通訊方法。
資料存取層
SQL Server:資料儲存中心。
5.你需要學習java數據庫技術,如JDBCAPI並且會使用至少一種persistence/ORM構架,
例如Hibernate,JDO, CocoBase,Top Link,Inside Liberator(國產JDO紅工廠軟體)或者iBatis。
ODBC API?
[ORM]
NHibernate
iBatis .Net
Apache OpenJPA
ActiveRecord pattern
http://www.castleproject.org/activerecord/
6.你還應該了解對象關係的阻抗失配的含義,
以及它是如何影響業務對象的與關係型數據庫的交互,和它的運行結果,還需要掌握不同的數據庫產品運用,
比如:oracle,mysql,mssqlserver。
7.你需要學習JAVA的沙盒安全模式
(
classloaders,
bytecodeverification,
managers,
policyandpermissions,
codesigning,
digitalsignatures,
cryptography,
certification,
Kerberos,
以及其他
)
還有不同的安全/認證 API,
例如JAAS(Java Authenticationand Authorization Service),
JCE(Java Cryptography Extension),
JSSE(Java Secure Socket Extension),以及
JGSS(Java General Security Service)。
[沙盒安全模式]
VBA 巨集?
[安全/認證 API]
認證?
憑証?
CardSpace?
8.你需要學習Servlets,JSP,以及JSTL(Standard Tag Libraries)和可以選擇的第三方Tag Libraries。
[Tag Libraries]
?
9.你需要熟悉主流的網頁框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他們下面的涉及模式,如MVC/MODEL2。
[網頁框架]
?
[模式]
?
10.你需要學習如何使用及管理WEB伺服器,例如tomcat,resin,Jrun,並且知道如何在其基礎上擴展和維護WEB程式。
[WEB伺服器]
IIS
11.你需要學習分佈式對象以及遠程API,例如RMI和RMI/IIOP。
[遠程API]
DCOM
.Net Remoting & XML WebServices
WCF
12.你需要掌握各種流行中間件技術標準和與java結合實現,比如Tuxedo、CROBA,當然也包括java EE本身。
[中間件技術]
?
13.你需要學習最少一種的XMLAPI,例如
JAXP(Java API for XML Processing),
JDOM(Java for XML Document Object Model),
DOM4J,或
JAXR(Java API for XML Registries)。
[XMLAPI]
http://www.java2s.com/Code/CSharp/XML/CatalogXML.htm
http://www.java2s.com/Code/CSharp/XML-LINQ/CatalogXML-LINQ.htm
14.你應該學習如何利用JAVA API和工具來構建Web Service。
例如JAX-RPC(Java API for XML/RPC),
SAAJ(SOAP with Attachments API for Java),
JAXB(Java Architecture for XML Binding),
JAXM(Java API for XML Messaging),
JAXR(Java API for XML Registries),或者
JWSDP(Java Web Services Developer Pack)。
[C#來構建Web Service]
http://msdn.microsoft.com/zh-tw/library/aa290754(VS.71).aspx
15.你需要學習一門輕量級應用程式框架,例如Spring,PicoContainer,Avalon,
以及它們的IoC/DI風格(setter,constructor,interfaceinjection)。
[輕量級應用程式框架]
?
[Inversion of Control Dependency Injection]
Autofac
Castle
ObjectBuilder
Spring.net
StructureMap
Winter.NET
16.你需要熟悉不同的J2EE技術,例如
JNDI(Java Namingand Directory Interface),
JMS(Java Message Service),
JTA/JTS(Java Transaction API/Java Transaction Service),
JMX(Java Management eXtensions),以及
JavaMail。
[Namingand Directory]
?
[Message Service]
?
[Transaction API]
?
[Mail]
using System.Web.Mail;
http://www.java2s.com/Code/CSharp/Network/Mail.htm
17.你需要學習企業級JavaBeans(EJB)以及它們的不同組件模式:
Stateless/Stateful Session Beans,
Entity Beans(包含Bean-Managed Persistence[BMP]或者Container-Managed Persistence[CMP]和它的EJB-QL),或者
Message-Driven Beans(MDB)。
?
18.你需要學習如何管理與配置一個J2EE應用程式伺服器,如WebLogic,JBoss等,
並且利用它的附加服務,例如簇類,連接池以及分佈式處理支援。
你還需要了解如何在它上面封裝和配置應用程式並且能夠監控、調整它的性能。
[應用程式伺服器]
Biztalk?
19.你需要熟悉面向方面的程式設計以及面向屬性的程式設計(這兩個都被很容易混淆的縮寫為AOP),
以及他們的主流JAVA規格和執行。例如AspectJ和AspectWerkz。
[AOP]
DotNetAOP
AspectSharp
http://aspectsharp.sourceforge.net/
AOP .Net
http://sourceforge.net/projects/aopnet/
20.你需要熟悉對不同有用的API和framework等來為你服務。
例如Log4J(logging/tracing),
Quartz(scheduling),
JGroups(network group communication),
JCache(distributed caching),
Lucene(full-text search),
Jakarta Commons等等。
[logging/tracing的API和framework]
?
[scheduling的API和framework]
?
[network group communication的API和framework]
?
[distributed caching的API和framework]
?
[full-text search的API和framework]
Index Server?
21.如果你將要對接或者正和舊的系統或者本地平臺,
你需要學習JNI(Java Native Interface) and JCA(Java Connector Architecture)。
[Native Interface]
P/Invoke
http://en.wikipedia.org/wiki/Platform_Invocation_Services
[Connector Architecture]
WF(Windows Workflow Foundation)?
http://zh.wikipedia.org/zh-tw/Windows_Workflow_Foundation
22.你需要熟悉JINI技術以及與它相關的分佈式系統,比如掌握CROBA。
[分佈式系統]
DCOM
.Net
23.你需要Java Community Process(JCP)以及他的不同Java Specification Requests(JSRs),
例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。
[Community Process]
?
[Specification Requests]
CLS?
24.你應該熟練掌握一種JAVA IDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。
(有些人更喜歡VI或EMACS來編寫文件。隨便你用什麼了)
[IDE]
Visual Studio
UEStudio
http://www.softking.com.tw/soft/clickcount.asp?fid3=23902
http://www.ultraedit.com/
http://www.ithome.com.tw/itadm/article.php?c=53702&s=2
CSharp Studio
MonoDevelop
SharpDevelop
25.JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。
[代碼生成工具]
?
26.你需要熟悉一種單元測試體系(JNunit),並且學習不同的生成、部署工具(Ant,Maven)。
[單元測試]
NUnit
[部署工具]
ClickOnce
Windows Installer
MSDeploy
27.你需要熟悉一些在JAVA開發中經常用到的軟體工程過程。例如RUP(Rational Unified Process) and Agile methodologies。
[.Net開發中經常用到的軟體工程過程]
?
28.你需要能夠深入了解加熟練操作和配置不同的作業系統,比如GNU/linux,sun solaris,mac OS等,做為跨平臺軟體的開發者。
[跨平臺軟體]
Mono
http://www.mono-project.com/Main_Page
29.你還需要緊跟java發展的步伐,比如現在可以深入的學習java ME,以及各種java新規範,技術的運用,如新起的web富客戶端技術。
[Mobile]
Microsoft .Net Compact Framework
Windows Mobile API
[新起的web富客戶端技術]
SOAP?
30.你必需要對opensource有所了解,因為至少java的很多技術直接是靠開源來驅動發展的,如java 3D技術。
[opensource]
http://www.codeproject.com/
http://www.codeplex.com/
[2D/3D技術]
GDI
GDI+
XNA
DirectX
OpenGL
http://www.java2s.com/Tutorial/CSharp/0480__2D/Catalog0480__2D.htm
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.121.217.98
※ 編輯: x2012tw 來自: 122.121.217.98 (02/24 08:15)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):