主頁 > 軟體設計 > 【Java從入門到天黑|01】SE入門之Java的前生今世

【Java從入門到天黑|01】SE入門之Java的前生今世

2021-04-17 11:34:19 軟體設計

大家好,我是孫叫獸,微信公眾號【孫叫獸雜談】,本期給大家分享一下JavaSE的入門部分之Java的前生今世,

Java : 一個帝國的誕生

C語言帝國的統治

現在是公元1995年, C語言帝國已經統治了我們20多年, 實在是太久了,

1972年, 隨著C語言的誕生和Unix的問世, 帝國迅速建立統治, 從北美到歐洲, 從歐洲到亞洲, 無數程式員臣服在他的腳下,

帝國給我們提供了極好的福利:貼近硬體, 運行極快, 效率極高,

使用這些福利, 程式員們用C 開發了很多系統級軟體,作業系統, 編譯器, 資料庫,網路系統.....

但是帝國也給我們安上了兩個沉重的枷鎖: 指標和記憶體管理

雖然指標無比強大, 能直接操作記憶體, 但是帝國卻沒有給我們工具去做越界的檢查, 導致很多新手程式員輕易犯錯,

至于記憶體管理, 帝國更完全是放任的態度: 你自己分配的空間, 自己去釋放 !

更要命的是這些問題在編譯期發現不了, 在運行時才會突然暴露, 常常讓我們手忙腳亂, 昏天黑地去除錯,

我們的大量時間和寶貴的精力都被浪費在小心翼翼的處理指標和記憶體分配上,

每個程式員都被這兩個東西搞的焦頭爛額!

帝國宣稱的可移植性騙了我們,他宣稱我們在一個機器上寫的程式, 只要在另外一個機器上編譯就可以了, 實際上不是這樣, 他要求我們盡量用標準的C函式庫,其次,如果遇到了一些針對特定平臺的呼叫, 需要對每個平臺都得寫

一份 ! 有一點點小錯誤,都會導致編譯失敗,

1982年,帝國又推出了一門新的語言C++, 添加了面向物件的功能,兼容C, 有靜態型別檢查, 性能也很好,

但是這門新的語言實在是太復雜了, 復雜到比我聰明的多的人都沒有辦法完全掌握這門語言,它的很多特性復雜的讓人吃驚,

C++在圖形領域和游戲上取得了一些成功, 但是我一直學不好它,

反抗

我決定反抗這個龐大的帝國, 我偷偷的帶領著一幫志同道合的兄弟離開了,我們要新建一塊清新自由的領地,

為了吸引更多的程式員加入我們, 我們要建立一個新的語言,這個語言應該有這樣的特性:

語法有點像C , 這樣大家容易接受沒有C語言那樣的指標

再也不要考慮記憶體管理了, 實在受不了了

真正的可移植性, 撰寫一次, 到處運行

面向物件

型別安全

還有,我們要提供一套高質量的類別庫, 隨語言發行

我想把這個語言命名為C++-- , C++減減, 因為我想在C++的基礎上改進,把它簡化,

后來發現不行, 設計理念差別太大,

干脆重啟爐灶,

我看到門口的一棵橡樹, 就把這個語言叫做Oak

但是后來發布的時候, 發現Oak已經被別人用了, 我們討論很久, 最終決定把這門新的語言叫做

Java

為了實作跨平臺, 我們在作業系統和應用程式之間增加了一個抽象層: Java 虛擬機

Java寫的程式都跑在虛擬機上, 除非個別情況, 都不用看到作業系統,

一鳴驚人

為了吸引更多的人加入我們的新領地, 我們決定搞一個演示, 向大家展示Java 的能力,

出世未久的Java其實還遠不完善, 搞點什么好呢?

我們把眼光盯上了剛剛興起的互聯網, 1995年的網頁簡單而粗糙, 缺乏互動性, 于是我們在瀏覽器上弄了個小插件, 把java 運行環境放了上去,

然后在上面開發了一個圖形界面的程式(Applet), 讓它看起來美輪美奐, 震撼人心,

每一個看到他的程式員都會發出“Wow”的驚嘆 !為之傾倒,

Java 活了!

通過Applet , 無數的程式員看到了Java這門語言,了解了這門語言特性以后, 很多無法忍受C帝國暴政的程式員, 很快加入了我們, 我們的領地開始迅速擴大,

C語言帝國里的一些商業巨頭也紛紛來和我們合作, 其中就包括Oracle , 微軟這樣的巨頭 , 微軟的頭領Bill Gates還說 :這是迄今為止設計的最好的語言!

但是Bill Gates非常的不地道, 買了我們的Java 許可以后,雖然在自家的瀏覽器上也支持Applet, 但是他們卻偷偷的試圖修改Java , 想把Java綁死在自家的作業系統上賺錢, Java會變的不可移植,

這是我們難于忍受的, 我們和微軟發起了一場曠日持久的游擊戰爭, 逼著微軟退出了Java領域, 開發了自己的.NET , 這是后話,

開拓疆土

1995年到1997年,我們依靠 Java 不斷的攻城略地, 開拓疆土,我們王國的子民不斷增加, 達到了幾十萬之眾, 已經是一個不可忽視的力量了,

但是大家發現, Java除了Applet, 以及一些小程式之外, 似乎干不了別的事情,

C帝國的人還不斷的嘲笑我們慢, 像個玩具,

到了1998年, 經過密謀, 我們Java 王國決定派出三只軍隊向外擴展:

Java 2 標準版(J2SE): 去占領桌面

Java 2 移動版(J2ME): 去占領手機

Java 2 企業版(J2EE): 去占領服務器

其中的兩只大軍很快敗下陣來,

J2SE 的首領發現, 開發桌面應用的程式員根本接受不了Java, 雖然我們有做的很優雅的Swing 可以開發界面, 但是開發出的界面非常難看, 和原生的桌面差距很大, 尤其是為了運行程式還得安裝一個虛擬機, 大家都受不了,

J2ME也是, 一直不受待見, 當然更重要的原因是喬布斯還沒有重新發明手機, 移動互聯網還沒有啟動,

失之東隅,收之桑榆, J2EE趕上了好時候, 互聯網大發展, 大家忽然發現, Java簡直是為寫服務器端程式所發明的!

強大, 健壯, 安全, 簡單, 跨平臺 !

J2EE規范的指導下, 特別適合團隊開發復雜的大型專案,

我們授權BEA公司第一個使用J2EE許可證, 推出了Weblogic, 憑借其集群功能, 第一次展示了復雜應用的可擴展性和高可用性, 【三高:高可用,高性能,高并發】

這個后來被稱為中間件的東西把程式員從事務管理,安全管理,權限管理等方面解放出來, 讓他們專注于業務開發, 這立刻捕獲了大量程式員的心,

很快Java 王國的子民就達到數百萬之眾,

榜樣的力量是無窮的, 很快其他商業巨頭也紛紛入場, 尤其是IBM,在Java 上瘋狂投入,不僅開發了自己的應用服務器 Websphere, 還推出了Eclipse這個極具魅力的開源開發平臺,

當然IBM利用java 獲得了非常可觀的效益, 軟體+硬體+服務 三駕馬車滾滾向前, 把IBM推向了一個新的高峰,

帝國的誕生

大家也沒有想到,除了商業巨頭以外, 程式員們也會對Java王國 這么熱愛, 他們基于Java 開發了巨多的平臺,系統,工具,例如:

構建工具: AntMaven, Jekins

應用服務器: TomcatJetty, Jboss, Websphere, weblogic

Web開發: Struts,Spring,Hibernate, myBatis

開發工具: Eclipse, Netbean,intellij idea, Jbuilder

,,,,等等等等,,,,

并且絕大部分都是開源的 !

微軟眼睜睜的看著服務器端的市場被Java 王國占據, 豈能善罷甘休? 他們趕緊推出.NET來對抗, 但我們已經不在乎了, 因為他的系統是封閉的,所有的軟體都是自家的:

開發工具是Visual Studio, 應用服務器是IIS, 資料庫是SQL Server,只要你用.NET,基本上就會系結微軟,

另外他們的系統只能運行在Windows服務器上, 這個服務器在高端市場的占有率實在是太低了,

2005年底, 一個新的王國突然崛起, 他們號稱開發效率比java 5-10倍, 由此吸引了大批程式員前往加盟,

這個新的王國叫做Ruby on Rails, 它結合了PHP體系的優點(快速開發)和Java體系的優點(程式規整), 特別適合快速的開發簡單的Web網站,

雖然發展很快, 但沒有對Java 王國產生實質性的威脅, 使用Ruby on Rails搭建大型商業系統的還很少,

除了Ruby on Rails ,還有PHP Python , 都適合快速開發不太復雜的Web系統, 但是關鍵的,復雜的商業系統開發還是Java 王國的統治之下, 所以我們和他們相安無事,

2006年, 一只叫Hadoop的軍隊讓Java王國入侵了大資料領域, 由于使用Java 語言, 絕大多數程式員在理解了Map/Reduce , 分布式檔案系統在Hadoop中的實作以后, 很快就能撰寫處理處理海量資料的程式, Java 王國的領地得到

了極大的擴展,

2008年, 一個名叫Android 的系統橫空出世, 并且隨著移動互聯網的爆發迅速普及, 運行在Android之上的正是Java

Java 王國在Google的支持下, 以一種意想不到的方式占領了手機端, 完成了當年J2ME 壯志未酬的事業!

到今年為止, 全世界估計有1000萬程式員加入了Java王國,它領土之廣泛, 實力之強大, 是其他語言無法比擬的,

Java 占據了大部分的服務器端開發,尤其是關鍵的復雜的系統, 絕大多數的手機端, 以及大部分的大資料領域,

一個偉大的帝國誕生了,

Java的特性和優勢

簡單性

就是c++語法的純凈版,沒有頭檔案,指標運算,結構,聯合,運算子多載,虛基類等等,由于語法基于c,因此學習起來完全不費力,

面向物件

面向物件是一種程式設計技術,他將重點放在資料(即物件)和物件之間的介面上,模擬人的思維寫程式,萬物皆物件!

可移植性(跨平臺性)

這是JAVA的一個重要的優勢,JAVA代碼或者說位元組碼、二進制碼可以跨平臺的移植,而不用管具體的作業系統和硬體環境,

一次撰寫,隨處運行“write once, run anywhere”

JAVA在設計時就很注重移植和跨平臺性,比如:JAVAInt永遠都是32位,不像c++可能是1632,可能是根據編譯器廠商規定的變化,這樣的話程式的移植就會非常麻煩,

高性能

JIT(JUST IN TIME)即時編譯,將一些熱點位元組碼編譯成本地機器碼,并將結果快取起來,在需要的時候重新呼叫,這樣的話,使JAVA程式的執行效率大大提高,某些代碼甚至接近c++的效率,隨著這種技術的一天天完善,也許有一天會超越編譯代碼的效率,

分布式

JAVA是為internet的分布式環境設計的,因為他能夠處理tcp/ip協議,事實上,通過url訪問一個網路資源和訪問本地檔案是一樣簡單的,Java還支持遠程方法呼叫(RMI,remote method Invocation),使程式能夠通過網路呼叫方法,

動態性

就是在需要時將某些代碼添加到正在運行的程式中,反射機制,當需要把某些代碼添加到正在運行的程式中時,動態性是一個非常重要的特性,Java的動態特性是其面向物件設計方法的擴展,它允許程式動態地裝入運行程序中所需要

的類,這是C++語言進行面向物件程式設計所無法實作的

多執行緒

多執行緒的使用可以帶來更好的互動回應和實時行為,多執行緒的簡單性是Java成為主流服務器端開發語言的主要原因之一,

安全性

Java適合于網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以構建防病毒,防篡改的系統,

健壯性

Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程式健壯性的部分(如:指標、記憶體的申請與釋放等),Java程式不可能造成計算機崩潰,Java系統仔細檢測對記憶體的每次訪問,確認它是合法的,而且不致引起

任何問題,不過,即使Java程式也可能有錯誤,如果出現某種出乎意料之事,程式也不會崩潰,而是把該例外拋棄,再通過例外處理機制,程式就會發現這類例外,并加以處理,

當然,我們學習他這門語言,最初的目的,是因為使用的人多,我們需要去掌握學習,但是當我們慢慢的越來越深入的時候,你就會愛上他,發現他的無窮魅力并為之沉醉!

JAVA語言為什么能夠成功

一個產品的成功和一個人的成功是一個道理,除了自身具備過硬的優勢外,還需要那么一點點狗屎運,甚至狗屎運非常關鍵,就是我們所講的天時地利人和,JAVA的成功除了自己具備跨平臺特性外,更重要的是正好踩中了互聯網發

展的節奏,微軟的成功除了windows好用外,也是正好踩中了個人電腦發展的節奏,所以,我們除了自己努力外,也需要出去走走努力才踩一坨狗屎才行!

學技術,也需要知道很多事情和歷史對吧,我們來聊聊硅谷,

斯坦福大學依靠自身龐大的校區,創建了斯坦福科技園(硅谷的前身),初期采用房租免費等方式,鼓勵自己的畢業生在科技園創業、鼓勵社會企業入駐,由于免費的方式再加上其他優惠的政策,吸引了大量的創業者加入進來,最終大

家添柴加火,造就了今天的硅谷,這才是最高明的房地產商啊!說到房地產,我們現在這個社會是不是就很難受了,年薪20萬,買一套房子180萬,你算算,是不是大概下來就需要十年了,你說你一個大好青年,因為一個房子,就一

下變成中年大叔了!哎,人間不值得啊,所以我們需要通過不斷的學習來提高自己,從而進步!讓自己的人生更有價值,而不是活著而已,

斯坦福大學百科

看著這么多的牛人,各位,是不是我們也得努努力了,少刷點抖音,少玩點王者,吃雞(玩得時候帶帶我~)多跟著我敲敲代碼,沒準以后咋們的同學也能搞出一個改變世界的東西是吧,

好了,不多說話,我們先來認識一下我們即將要學習的最終要的階段,JavaSE

Java三大版本

首先,新人在剛入行的時候,不論是抱著什么目的(當然最后是因為興趣,因為興趣是一個很強的推動力),我們要了解學習什么東西,或者說從什么東西學起----JAVA,作為一款高級程式設計語言,它的學習難度上面,至少我認為

要比C語言簡單許多,再加上如今市場對這方面的人才需求非常大,所以很多人將它作為了首選,目前來說JAVA的應用比較偏向于WEB的設計,也是我們很多學習JAVA的同志,日久就業的一個方向,

JAVA最大的特點:

Java的主要優勢在于其做出的WORA:即一次撰寫(Write Once)、隨處運行(Run Anywhere),簡單來講,這意味著開發團隊能夠利用Java撰寫一款應用程式,并將其編譯為可執行形式,而后將其運行在任何支持Java的平臺之

上,這顯然能夠極大提高編程作業的實際效率,這種優勢來源于Java Virtual Machine(JAVA虛擬機的縮寫)JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實作的,

JAVA語言的一個非常重要的特點就是與平臺的無關性,而使用Java虛擬機是實作這一特點的關鍵,

JAVA的三大版本:

1. JAVA SE:它是JAVA的標準版,是整個JAVA的基礎和核心,這是我們主要學習的一個部分,也是JAVAEE和JAVAME技術的基礎,主要用于開發桌面應用程式,學會后可以做一些簡單的桌面應用

如:掃雷,連連看等,

2. JAVA ME:它是JAVA的微縮版,主要應用于嵌入式開發,比如手機程式的開發,目前來說就業范圍不是很廣,在一些城市可能相對的不好找作業,

3. JAVA EE:也叫JAVA的企業版,它提供了企業級應用開發的完整解決方案,比如開發網站,還有企業的一些應用系統,是JAVA技術應用最廣泛的領域,主要還是偏向于WEB的開發,而JAVA EE的基礎就是JAVA SE,所以我們在學

JAVA SE的時候,基礎一定要打好,因為這是最基本的,也是最核心的,

Java SE

經過這么多的介紹,相信大家已經很明白,如果學習JAVA的目的是為了就業,我們應該先學好JAVA SE,然后繼續學習JAVA EE,精髓在于多思考,多練習,不要怕會出錯,沒有完美的程式,都是不斷的在改進,不斷的在完善,出錯

是好事,這樣你可以了解更多的例外情況和突發情況,可以為日后作業中出現問題時及時解決積累足夠的經驗,

最后希望大家在學習程式開發的時候,要有一定勇于探索的精神,搞不懂的問題可以自己先思考(程式開發的核心也是在于不斷思考),實在搞不懂可以在網上查詢,也可以和大家討論,但是不要太過于較真,畢竟學海無涯,你永遠

都學不完所有的東西,要勞逸結合,不要讓自己過于疲憊,為了學習更多的東西犧牲健康,那是偉人才會做的事情,得不償失,

JDK JRE

我們回頭看看我們JavaSE的圖,

JDK

Java 2 SDK (Development Kit)包含:JRE的超集,包含編譯器和除錯器等用于程式開發的檔案

JRE

Java Runtime Environment (JRE) 包含:Java虛擬機、庫函式、運行Java應用程式和Applet所必須檔案

Java運行環境的三項主要功能:

加載代碼:由class loader 完成;

校驗代碼:由bytecode veri?er 完成;

執行代碼:由 runtime interpreter完成,

區別和聯系

sdk(也就是jdk)是jre的超集,是在jre的基礎上增加了編譯器及其他一些開發工具,

jre就是java運行時環境,包括了jvm和其它一些java核心api,任何一臺電腦,只有安裝了jre才可以運行java程式.

如果只是要運行JAVA程式,之需要JRE就可以, JRE通常非常小,也包含了JVM.

如果要開發JAVA程式,就需要安裝JDK

初識JVM

JAVA Virtual Machine

JVM是一種規范,可以使用軟體來實作,也可以使用硬體來實作,就是一個虛擬的用于執行bytecodes位元組碼的計算機,他也定義了指令集、暫存器集、結構堆疊、垃圾收集堆、記憶體區域,

JVM負責將java位元組碼解釋運行,邊解釋邊運行,這樣,速度就會受到一定的影響,JAVA提供了另一種解釋運行的方法JITjust in time),可以一次解釋完,再運行特定平臺上的機器碼,高級的JIT可以只能分析熱點代碼,并將這些

代碼轉成本地機器碼,并將結果快取起來,下次直接從記憶體中呼叫,這樣就大大提高了執行JAVA代碼的效率,這樣就實作了跨平臺、可移植的功能,

1. JVM是指在一臺計算機上由軟體或硬體模擬的計算機;它類似一個小巧而高效的CPU

2. byte-code代碼是與平臺無關的是虛擬機的機器指令,

3. java位元組代碼運行的兩種方式:

1)方式interpreter(解釋)

2)Just-in-time(即時編譯):由代碼生成器將位元組代碼轉換成本機的機器代碼,然后可以以較高速度執行,

JAVA的跨平臺實作的核心是不同平臺使用不同的虛擬機不同的作業系統有不同的虛擬機,Java 虛擬機機制屏蔽了底層運行平臺的差別,實作了一次編譯,隨處運行”

欲工善其事必先利其器,我們先把我們的環境搭建好,才能開始咋們的征程!

Java開發環境搭建

百度搜索JDK,找到下載地址,瀏覽Oracle的網站,

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

1. 選擇版本(我們采用JDK8

2. 同意協議(流氓協議)

3. 查看電腦的環境(64位,還是32位等等)

4. 下載安裝包

5. 安裝JDK JRE (改安裝目錄,注意規范,作為一個程式人,規范很重要,所以給電腦上環境單獨

分類最好,)

6. 配置電腦的環境變數 :

1. 我的電腦-->右鍵--->屬性

2. 環境變數-->添加 JAVA_HOME JDK的安裝地址:D:Environmentjavajdk1.8.0_201

3. 配置path%JAVA_HOME%bin %JAVA_HOME%jrebin

7. 測驗是否安裝成功:

1. 打開cmd(命令列視窗)

2. 輸出 java –version 查看版本資訊,是否成功輸出!

8. 安裝notpad++,或者一個好用的文本編輯器,最好不要用記事本,很不方便!

HelloWorld

環境安裝好了,測驗代碼一定要寫HelloWorld!代表你向這個世界的吶喊,儀式感很重要,就像你生活

中和家人,朋友,妻子在節日中或者紀念日一定要做一些事情,這就是儀式感,所以各位來跟著我寫

哈!

1. 我們先隨便建立一個檔案夾,放我們的代碼

2. 新建檔案 Hello.java

3. 撰寫我們的HelloWorld程式!

public class Hello{

public static void main(String[] args){

System.out.println("Hello,World!");

  }
 }

4. 保存檔案,打開命令列,利用javac編譯!

1 javac Hello.java

2 # 如果沒有報錯,查看檔案夾下是否有新的一個檔案

3 # Hello.class

4 # 如果沒有出現,恭喜!說明你遇到了你在學Java當中的第一個Bug

5. java 執行!

1 java Hello

2 # 成功輸出HelloWorld

如果出現錯誤,檢查字母大小寫是否有錯誤,或者是否標點符號錯誤,檔案名錯誤等等,一定要確保成功輸出,我們之后再來研究,它是怎么輸出的!

撰寫 Java 程式時,應注意以下幾點:

大小寫敏感Java 是大小寫敏感的,這就意味著識別符號 Hello hello 是不同的,

類名:對于所有的類來說,類名的首字母應該大寫,如果類名由若干單詞組成,那么每個單詞的首字母應該大寫,例如 MyFirstJavaClass

方法名:所有的方法名都應該以小寫字母開頭,如果方法名含有若干單詞,則后面的每個單詞首字母大寫,

源檔案名:源檔案名必須和類名相同,當保存檔案的時候,你應該使用類名作為檔案名保存(切記Java 是大小寫敏感的),檔案名的后綴為 .java,(如果檔案名和類名不相同則會導致編譯錯誤),

主方法入口:所有的 Java 程式由 public static void main(String []args) 方法開始執行,

JAVA程式運行機制

計算機的高級編程語言型別: 編譯型 ,解釋型. Java 語言是兩種型別的結合;

【科普:編譯型 ,解釋型】

字面上看,編譯解釋的確都有翻譯的意思,它們的區別則在于翻譯的時機安排不大一樣,

//我們先看看編譯型:有一個負責翻譯的程式來對我們的源代碼進行轉換,生成相對應的可執行代碼,這個程序說得專業一點,就稱為編譯(Compile),而負責編譯的程式自然就稱為編譯器(Compiler),就類似于把一本中文書

直接翻譯成英文版進行出售,

//現在再看看解釋型:打個比方:假如你打算閱讀一本外文書,而你不知道這門外語,那么你可以找一名翻譯,給他足夠的時間讓他從頭到尾把整本書翻譯好,然后把書的母語版交給你閱讀(編譯型);或者,你也立刻讓這名翻

譯輔助你閱讀,讓他一句一句給你翻譯,如果你想往回看某個章節,他也得重新給你翻譯,(解釋型)

//編譯型與解釋型,兩者各有利弊,前者由于程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都采用它,像C/C++Pascal/Object 、Pascal(Delphi)、VB等基本都可視為編譯語言,而一些網頁腳本、服務器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平臺間的兼容性有一定要求的程式則通常使用解釋性語言,如Java、JavaScript、VBScriptPerlPython等等,

//Java語言雖然比較接近解釋型語言的特征,但在執行之前已經預先進行一次預編譯,生成的代碼是介于機器碼和Java源代碼之間的中介代碼,運行的時候則由JVMJava的虛擬機平臺,可視為解釋器)解釋執行,它既保留了

源代碼的高抽象、可移植的特點,又已經完成了對源代碼的大部分預編譯作業,所以執行起來比“純解釋型程式要快許多,

//總之,隨著設計技術與硬體的不斷發展,編譯型與解釋型兩種方式的界限正在不斷變得模糊,

第一步:編譯

利用編譯器(javac)將源程式編譯成位元組碼à 位元組碼檔案名:源檔案名.class

第二部:運行

利用虛擬機(解釋器,java)解釋執行class位元組碼檔案,

總結

我們了解了計算機的發展史

看到了Java帝國的誕生

了解了Java這門語言的特性

跟著歷史看懂了Java的三大版本

安裝了Java的開發環境

寫了自己的第一個程式HelloWorld!

知道了編譯型和解釋型語言的區別

當然,我認為這些都不是最重要的,關鍵是,今天我們踏出了第一步,我看過這樣一個故事:

一個原始人抬頭仰望星空,宇宙發出了警告!人類問為什么,宇宙使者說:從他抬頭仰望星空開始,整個人類的發展就不過是為了實作他的愿望而已!

所以,只要確定了方向,只要不停下腳步,我們侄訓抵達終點,實作自己的夢!

安裝IDEA

每次都要利用記事本去撰寫代碼的話,那將是十分麻煩的,工程量大,不易于除錯,所以我們迫切需要一款智能的開發工具,于是EclipsemyEclipsenetbeansIntellij IDEA等智能的IDE誕生了,早時候學習都是利用的Eclipse,不

過現在我們學習和作業大部分都利用IDEA了,這也是互聯網的殘酷性,每個時代都有自己的寵兒,所以我們無論什么時候都需要有危機感,不能忘記學習!

我們來看看IDEA,它是 JetBrains 公司下的Java集成開發環境,在業界被公認為是最好的Java開發工具之一;JetBrains是捷克的一家軟體公司,該公司總部位于捷克共和國的首都布拉格,開發人員以嚴謹著稱的東歐程式員為主,旗

下開發了多款軟體開發工具;

https://www.jetbrains.com/

演示:瀏覽并介紹jetbrains的官網

目前IntelliJ IDEA有免費的社區版(功能相對較少),和收費的旗艦版(功能比較全面);

我們看自己需要和能力下載,有條件的話,用人家的東西還是可以用正版的,

IDEA下載地址:

鏈接:https://pan.baidu.com/s/1_9CDV4jL3BTzi6omT79ulQ

提取碼:xmxq

官方下載地址http://www.jetbrains.com/idea/download/#section=windows

安裝步驟:

1. 直接安裝完成

2. 下載破解補丁:http://idea.lanyus.com/

3.得到 JetbrainsCrack-2.6.10-release-enc.jar 我們重命名去掉 -release-enc 然后放在idea安裝目錄的bin檔案夾下

4. IDEA安裝目錄bin目錄里找到 idea.exe.vmoptions idea64.exe.vmoptions 兩個檔案打開,在

最后一行添加 -javaagent:D:IDEAIntelliJ IDEA 2017.2.5binJetbrainsCrack-2.6.10.jar

5. 打開IDEA激活碼填寫

1 ThisCrackLicenseId-{

2 "licenseId":"ThisCrackLicenseId",

3 "licenseeName":"idea",

4 "assigneeName":"kuangshen",

5 "assigneeEmail":"24736743@qq.com",

6 "licenseRestriction":"For This Crack, Only Test! Please support genuine!!!",

7 "checkConcurrentUse":false,

8 "products":[

9 {"code":"II","paidUpTo":"2099-12-31"},

10 {"code":"DM","paidUpTo":"2099-12-31"},

11 {"code":"AC","paidUpTo":"2099-12-31"},

12 {"code":"RS0","paidUpTo":"2099-12-31"},

13 {"code":"WS","paidUpTo":"2099-12-31"},

14 {"code":"DPN","paidUpTo":"2099-12-31"},

15 {"code":"RC","paidUpTo":"2099-12-31"},

16 {"code":"PS","paidUpTo":"2099-12-31"},

17 {"code":"DC","paidUpTo":"2099-12-31"},

18 {"code":"RM","paidUpTo":"2099-12-31"},

19 {"code":"CL","paidUpTo":"2099-12-31"},

20 {"code":"PC","paidUpTo":"2099-12-31"}

21 ],

22 "hash":"2911276/0",

23 "gracePeriodDays":7,

24 "autoProlongated":false

25 }

1. 復制漢化檔案到lib : (漢化有BUG,不建議大家漢化,順便也能提高英語水平!)

2. IDEA優化配置參考 : https://jingyan.baidu.com/article/dca1fa6f6af95af1a540527d.html

1. 調節字體

2. 滑鼠滾動大小

3. 注釋顏色

4. 字符編碼設定

5. 常用快捷鍵

6. 專案屬性瀏覽

3. 利用IDEA撰寫HelloWorld!查看控制臺輸出結果!

好了本期內容就分享到這里,我們下期見!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/277079.html

標籤:其他

上一篇:C++-建構式-static成員-C++11-友元

下一篇:30K入職騰訊,全靠這份606頁的Android面試指南

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more