摘要:年期間微軟公司發布,無論是技術實現上還是目標用戶都與有很多相近之處,給帶來了很多討論比較和競爭對的發展進程影響很大。年月日大會上,公司宣布最終會將開源。及其他與公司爭奪的控制權,令從跨平臺技術變為綁定在上的技術是微軟公司的主要目的。
一、基礎 面向對象 面向對象概念
面向對象(Object Oriented,OO)是軟件開發方法
對象:萬物皆對象,對象可以是具體的事物,也可以是抽象的規則、計劃或事件。
對象的狀態和行為:狀態代表數據,行為代表方法。
類(數據類型):具有相同特性(數據元素)和行為(功能)的對象的抽象就是類。類的具體化就是對象,對象是類的實例。類具有屬性(對象狀態的抽象)和操作(對象行為的抽象)
類的結構:世界上存在若干類,這些類之間存在關系,通常存在兩種主要的結構關系。⒈一般-具體結構(分類結構,"is a"關系)⒉整體-部分結構(組織結構,"has a"關系)
消息和方法:對象之間進行通信的結構叫做消息。對象接收到消息,根據消息說明去調用方法(消息應說明執行對象、方法、參數)。方法有方法名、返回值、參數、方法體。
面向對象特征封裝:封裝對象的屬性和行為,并設置訪問權限(支持方法重載)
繼承:繼承父類的屬性和行為,提供復用性。(單繼承,接口多繼承;支持方法重寫)
多態:基于封裝、繼承(重寫)、父引用指向子對象;允許不同的對象對同一消息做出不同反應;編譯期綁定(成員變量、靜態變量、靜態方法)、運行期綁定(成員方法);方法多態(重寫,重載)、引用多態(向上造型);
抽象:表示對問題領域進行分析、設計中得出的抽象的概念,基于abstract關鍵字,必須被子類繼承重寫,無法私有化(private)、靜態化(static)、最終化(final)。
JAVA JAVA體系JAVASE(桌面程序)
JAVAEE(網站服務)
JAVAME(手機嵌入式)
JAVACard(Java小程序Applets)
JAVA特點簡單性:單繼承、自動拆裝箱、簡化內存管理(引用替代指針,提供自動GC垃圾回收器)...
移植性:Java先編譯成字節碼(中間碼),由JVM來進行解釋(二進制碼)運行。
健壯性:強類型機制、異常處理、垃圾的自動收集等機制。
多線程:支持多線程
JAVA發展史1991年4月:James Gosling博士領導Gree Project,推出JAVA前身(Oak橡樹)
1995年5月23日:Oak語言改名為JAVA,并在SunWorld大會上正式發布JAVA 1.0版本,并提出"Write Once, Run AnyWhere"口號。
1996年1月23日:JDK 1.0發布,提供純解釋執行的Java虛擬機實現(Sun Classic VM)。代表技術:Java虛擬機、Applet、AWT等...
1996年4月:10個最主要的操作系統供應商申明將在其產品中嵌入Java技術。
1996年5月底:Sun公司于美國舊金山舉行首屆JavaOne大會。
1996年9月:已有大約8.3萬個網頁應用了Java技術來制作。
1997年2月19日:JDK 1.1發布。代表技術:JAR文件格式、JDBC、JavaBeans、RMI。Java語法:內部類(Inner Class)和反射(Reflection)
1998年12月4日:JDK 1.2-Playground(競技場)發布。Sun在這個版本中將Java體系拆分為3個方向:J2SE(面向桌面開發)、J2EE(面向企業級開發)、J2ME(面向手機移動終端開發);代表技術:EJB、Java Plug-in、Java IDL、Swing等;Java虛擬機:第一次內置JIT(Just In Time)編譯器(JDK1.2曾并存Classic VM、HoSpot VM、Exact VM,Exact VM只在Solaris平臺出現過;后兩者是內置JIT編譯器;之前版本Classic VM只能以外掛形式使用JIT編譯器);Java語法:添加strictfp關鍵字;Java API:Collections集合類。
1999年3月:JDK 1.2.1發布。
1999年4月8日:JDK 1.1 共發布 1.1.0 ~ 1.1.8 九個版本。從1.1.4之后,每個版本都有工程代號:Sparkler、Pumpkin、Abigail、Brutus、Chelsea
1999年4月27日:HotSpot虛擬機發布。最初由"Longview Technologies"小公司發布。1997年被Sun公司收購。HotSpot虛擬機發布時是作為JDK1.2的附加程序提供。后來成為JDK 1.3及之后所有版本的Sun JDK的默認虛擬機。
1999年7月:JDK 1.2.2發布。
2000年5月8日:JDK 1.3-Kestrel(美洲紅隼)發布。Java API:數學運算、新的Timer API等;JNDI作為一項平臺級服務提供(以前僅是一項擴展);使用CORBA IIOP實現RMI的通信協議;改進JAVA 2D(提供大量新的Java 2D Api,新增JavaSound類庫)。
2001你那5月17日:JDK 1.3.1-Ladybrid(瓢蟲)修正版本發布。自JDK 1.3開始,Sun維持一個習慣:每隔兩年發布一個JDK主版本,以動物命名,期間的各個修正版本則以昆蟲作為工程名稱。
2002年2月13日:JDK 1.4-Merlin(灰背隼)發布。技術特性:正則表達式、異常鏈、NIO、日志類、XML解析器和XSTL轉換器等。
2002年9月16日:JDk 1.4.1-Grasshopper(蚱蜢)修正版本發布。
2002年期間:微軟公司發布.NET Framework,無論是技術實現上還是目標用戶都與Java有很多相近之處,給Java帶來了很多討論、比較和競爭對Java的發展進程影響很大。
2003年6月26日:JDK 1.4.2-Mantis(螳螂)修正版本發布。
2004年9月30日:JDK 1.5-Tiger(老虎)發布。語法特性:自動裝箱、泛型、動態注解、枚舉、可變長參數、遍歷循環(foreach)等;Java 虛擬機:改進Java的內存模型(Java Memory Model,JMM);Java API:提供java.util.concurrent并發包等。
2006年11月13日:JavaOne大會上,Sun公司宣布最終會將Java開源。
2006年12月11日:JDK 1.6-Mustang(野馬)發布。命名方式:終結J2EE、J2SE、J2ME命名方式,啟用Java SE6、Java EE6、Java ME6命名方式;Java API:提供動態語言支持(通過內置Mozilla JavaScript Rhino引擎實現)、提供編譯API、微型HTTP服務器API等;Java虛擬機:做了大量改進,包括鎖與同步、垃圾收集、類加載等方面的算法。
2009年2月19日:JDK 1.7-Dolphin(海豚)發布。主要改進:新的G1收集器(2012年4月的Update4中才正式"轉正")、加強非Java語言的調用支持(JSR-292,未完全實現定型)、升級類加載架構等。推遲計劃:lambda項目(Lambda表達式、函數式編程)、Jigsaw項目(虛擬機模塊化支持)、Coin項目(語言細節進化)。
2014年3月18日:JDK 1.8-Spider(蜘蛛)發布。語言特性:Lambda表達式、方法引用、引入defalut關鍵字、重復注解、擴展注解的支持、Optional、Stream、Date/Time API、JavaScript引擎Nashorn、Base64。
JVM JVM發展史Sun Classic/Exact VM: Classic VM:(第一款商用Java虛擬機;純解釋器,外掛編譯器(外掛后解析器便不再工作)),Exact VM(兩級即時編譯器;編譯器與解析器混合工作模式;使用準確式內存管理,可判斷內存數據的類型)
Sun HotSpot VM:由"Longview Technologies"小公司設計,最后被Sun公司收購,具備Exact VM的優點,及熱點代碼探測技術(通過執行計數器找出最具有編譯價值代碼,通知JIT編譯器以方法為單位進行編譯。取代了Exact VM)
Sun Mobile-Embedded VM/Meta-Circular VM:面向移動和嵌入式市場。KVM(簡單、輕量、高度可移植,運行速度較慢,曾廣泛應用非智能手機上);CDC/CLDC HotSpot Implementation(Java ME的重要支柱);Squawk VM(Java代碼比重很高);JavaInJava(Sun 公司實驗室性質虛擬機,試圖實現"元循環",內部沒有JIT編譯器,只以解釋模式執行);Maxine VM(與JavaInJava相似,有先進的JIT編譯器和垃圾收集器(但沒有解釋器),執行效率略高)。
BEA JRockit/IBM J9 VM:除Sun公司以外,其他研發虛擬機的公司中,規模最大、最著名的就是BEA和IBM公司。
Azul VM/BEA Liquid VM:高性能Java虛擬機
Apache harmony/Google Android Dalvik VM:"虛擬機",而非"Java 虛擬機"。
Microsoft JVM及其他:與Sun公司爭奪Java的控制權,令Java從跨平臺技術變為綁定在Windows上的技術是微軟公司的主要目的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77664.html
摘要:字母區分大小寫,因此和是不同類型的石頭。輸入輸出暴力解法將寶石中的每個元素在石頭中的數量相加的時間復雜度為石頭中的每個元素此元素在寶石中則官方解法哈希表將搜索的時間復雜度變為 本文章基于Datewhale第30期組隊學習 2021.11.15 # 1 兩數之和# 給定一個整數數組 nums...
摘要:發現一個很好的練習做題網站都是自己做過的,先放自己的答案,再放自己覺得不錯的其他回答。 發現一個很好的練習做題網站 Codewars 都是自己做過的,先放自己的答案,再放自己覺得不錯的其他回答。 1. 將首字母放到后面并加上ay pigIt(This is my string)轉換成:pigIt(hisTay siay ymay tringsay) mine function...
??前面的話?? 大家好!這是Java基礎知識與數據結構博文的導航帖,收藏我!學習Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關注?點贊?收藏??留言? ?本文由未見花聞原創,CSDN首發! ?首發時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠方! ?參考書籍:?《Java核心技術卷1》,?《Java核心技術卷2》,?《Java編程思想》 ?參考在線編程網站:?牛...
1. CharacterisDigit(), isAlphabetic(), isLetter() [Alphabet > letter]toLowerCase()2.各種長度String length()List類:size()array: length3.Arrayssort()4.Math系列容易混淆(double) pow(double m, double n) m的n次方(double)...
摘要:正式地講,提莫在發起發起攻擊意味著艾希在時間區間含和處于中毒狀態。示例輸入輸出解釋提莫攻擊對艾希的影響如下第秒,提莫攻擊艾希并使其立即中毒。第秒,提莫再次攻擊艾希,艾希中毒狀態又持續秒,即第秒和第秒。 ...
閱讀 1129·2021-10-27 14:13
閱讀 2636·2021-10-09 09:54
閱讀 897·2021-09-30 09:46
閱讀 2424·2021-07-30 15:30
閱讀 2166·2019-08-30 15:55
閱讀 3409·2019-08-30 15:54
閱讀 2847·2019-08-29 14:14
閱讀 2771·2019-08-29 13:12