Java是一門用來開發(fā)軟件的計(jì)算機(jī)語言,如同漢語是在中國(guó)進(jìn)行交流你的語言,西班牙語是在西班牙交流的語言,編程自然適合計(jì)算機(jī)溝通,就需要使用計(jì)算機(jī)認(rèn)識(shí)的語言,那么Java就是其中一個(gè),接下來會(huì)依次介紹:
- 軟件開發(fā)介紹
- 常見的編程語言
- Java語言的特點(diǎn)
- Java運(yùn)行機(jī)制
軟件開發(fā)
軟硬件介紹
- 硬件:一般是計(jì)算機(jī)硬件的簡(jiǎn)稱,是指計(jì)算機(jī)系統(tǒng)中由電子,機(jī)械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統(tǒng)結(jié)構(gòu)的要求構(gòu)成一個(gè)有機(jī)整體為計(jì)算機(jī)軟件運(yùn)行提供物質(zhì)基礎(chǔ),比如主板,硬盤,內(nèi)存條,電源,顯卡等能摸得著的東西都是硬件
- 軟件:是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來講軟件被劃分為系統(tǒng)軟件、應(yīng)用軟件,軟件并不只是包括可以在計(jì)算機(jī)(這里的計(jì)算機(jī)是指廣義的計(jì)算機(jī))上運(yùn)行的電腦程序,與這些電腦程序相關(guān)的文檔一般也被認(rèn)為是軟件的一部分
- windows操作系統(tǒng),ios操作系統(tǒng)等都屬于系統(tǒng)級(jí)別軟件,提供了直接通過圖形頁面操作計(jì)算機(jī)的功能
- 微信、QQ、釘釘這些屬于應(yīng)用軟件,可以幫助我們完成一些日常,工作需求
軟件開發(fā)
軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項(xiàng)包括需求捕捉、需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的系統(tǒng)工程。軟件一般是用某種程序設(shè)計(jì)語言來實(shí)現(xiàn)的。通常采用軟件開發(fā)工具可以進(jìn)行開發(fā)。
1. 程序員主要完成的是實(shí)現(xiàn)這個(gè)步驟,當(dāng)然自己寫的代碼也要自己測(cè)試一下才可以提交哦!
2. 需求捕捉:就是獲取需求,我們要做什么,這是軟件開發(fā)的第一步,一般由老板、客戶或者產(chǎn)品經(jīng)理負(fù)責(zé)
3. 需求分析:經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么
4. 設(shè)計(jì):根據(jù)需求分析階段確定的功能設(shè)計(jì)軟件系統(tǒng)的整體結(jié)構(gòu)、劃分功能模塊、確定每個(gè)模塊的實(shí)現(xiàn)方法,形成軟件的具體設(shè)計(jì)方案,這步驟一般UI設(shè)計(jì)師會(huì)參與進(jìn)來,協(xié)助完成軟件原型或者操作界面的設(shè)計(jì)
5. 測(cè)試:在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估,現(xiàn)在軟件的規(guī)模越來越大,功能越來越復(fù)雜,企業(yè)在陸陸續(xù)續(xù)配備專業(yè)的測(cè)試人員
人機(jī)交互方式
正常人類與計(jì)算機(jī)交互,也就是操作者對(duì)電腦發(fā)出一個(gè)命令之后計(jì)算機(jī)給操作者的反饋,操作者再根據(jù)反饋發(fā)出命令的這么一個(gè)循環(huán)過程。
按照目前科技普及程度,人機(jī)交互的方式有兩類,【圖形化界面】和【命令行方式】,下方將會(huì)介紹兩者概念區(qū)別,并且同時(shí)以打開windows文件系統(tǒng)為例實(shí)際演示。
圖形化界面(Graphical User Interface GUI)
這種方式簡(jiǎn)單直觀,操作者易于接受,容易上手操作。我們現(xiàn)在使用的大部分軟件都是圖形化界面的,我們通過點(diǎn)擊對(duì)應(yīng)的圖標(biāo)、文字,通過滑動(dòng)頁面、長(zhǎng)按等操作實(shí)現(xiàn)對(duì)軟件的操作。
命令行方式(Command Line Interface CLI)
需要有一個(gè)控制臺(tái),輸入特定的指令,讓計(jì)算機(jī)完成一些操作。較為麻煩,上手也比較困難,需要記錄住一些命令。比如windows系統(tǒng)可以輸入cmd來開啟控制臺(tái)。
總結(jié)
- 無論是哪種方式目的都是和計(jì)算機(jī)進(jìn)行對(duì)話,命令方式更加直接,圖形頁面方式更加方便
- 圖形頁面其實(shí)是對(duì)命令的封裝,配上美觀的圖標(biāo)和合理的頁面設(shè)計(jì),方便用戶使用
- 對(duì)于軟件的使用者來說我們當(dāng)然要提供圖形頁面,以降低使用難度,對(duì)于程序員來說工作過程中還要使用很多軟件命令行操作方式需要我們了解和掌握,當(dāng)然不是所有的,只是一些必須的會(huì)用就行了,忘記了也可以百度一下
常用DOS命令
下方列出一些windows系統(tǒng)中常用的命令,也稱為【DOS命令】
dir : 列出當(dāng)前目錄下的文件以及文件夾md : 創(chuàng)建目錄rd : 刪除目錄cd : 進(jìn)入指定目錄cd.. : 退回到上一級(jí)目錄cd: 退回到根目錄del : 刪除文件exit : 退出 dos 命令行
常用快捷鍵
← →:移動(dòng)光標(biāo) ↑ ↓:調(diào)閱歷史操作命令 Delete和Backspace:刪除字符
常見的編程語言
C: 許多計(jì)算機(jī)科學(xué)家表示,學(xué)習(xí)C可以教初學(xué)者了解計(jì)算機(jī)程序的真正原理,還有一些人認(rèn)為,它應(yīng)該是計(jì)算機(jī)開始學(xué)習(xí)編程的人學(xué)會(huì)的頭一種語言。主要用于嵌入式系統(tǒng)的應(yīng)用程序。
C :是C語言的增強(qiáng),主要用于開發(fā)系統(tǒng)軟件,應(yīng)用軟件,設(shè)備驅(qū)動(dòng)程序,嵌入式軟件,高性能服務(wù)器和客戶端應(yīng)用及娛樂軟件。
Java:說它是至今最流行的編程語言也不足為過,其可以用于各種各樣的領(lǐng)域,包括企業(yè)應(yīng)用及基礎(chǔ)設(shè)施,以及Web應(yīng)用和移動(dòng)開發(fā)。
JavaScript:在Web應(yīng)用上有著非常大的需求,主要目的是為了解決服務(wù)器端語言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。JavaScript主要用于實(shí)現(xiàn)為Web瀏覽器,以提供增強(qiáng)的用戶界面和動(dòng)態(tài)網(wǎng)站。
C#:是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語言。借鑒了Java,C,C 和Delphi的一些特點(diǎn),如今C#已經(jīng)成為微軟應(yīng)用商店和開發(fā)成員非常歡迎的開發(fā)語言。
PHP:是一種通用開源腳本語言,特別適合于Web開發(fā),可嵌入到HTML中,它最初是用來設(shè)計(jì)動(dòng)態(tài)網(wǎng)頁產(chǎn)生的。語法吸收了C語言、Java和Perl的特點(diǎn),入門門檻較低,易于學(xué)習(xí),使用廣泛。
Python:是應(yīng)用于設(shè)計(jì)各種各樣的應(yīng)用程序的動(dòng)態(tài)語言, 往往比Tcl,Perl,Ruby,Scheme和Java更容易編寫。Python語法簡(jiǎn)潔而清晰,具有豐富和強(qiáng)大的類庫(kù)。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言制作的各種模塊(尤其是C/C )輕松地聯(lián)結(jié)在一起。
Ruby:是一種動(dòng)態(tài)的,側(cè)重于簡(jiǎn)單個(gè)高效的開源語言,他是一個(gè)優(yōu)雅的語法,能夠很自然的閱讀和編寫,適合于快速開發(fā),一般開發(fā)效率是JAVA的5倍。
Objective-C:對(duì)于鐘情于Apple設(shè)備的網(wǎng)友來說,Objective-C的流行就得益于蘋果的成功,其是增加了Smalltalk風(fēng)格的消息在C編程語言中的反射,面向?qū)ο蟮恼Z言。主要使用于蘋果系統(tǒng)和GNUstep這兩個(gè)使用OpenStep的標(biāo)準(zhǔn)的系統(tǒng)。隨著蘋果平臺(tái)的巨大人氣,如今Objective-C語言被人們逐漸知道。
HTML5:是用于構(gòu)建因特網(wǎng)的核心技術(shù)的標(biāo)準(zhǔn)語言,用于Web呈現(xiàn)內(nèi)容,它是HTML標(biāo)準(zhǔn)的第五次修訂,如今,HTML5繼續(xù)在移動(dòng)開發(fā)領(lǐng)域發(fā)揮著重要的作用,為互聯(lián)網(wǎng)的發(fā)展提供了多樣化的發(fā)展道路,37%的開發(fā)者依賴HTML5開發(fā)移動(dòng)網(wǎng)站和Web應(yīng)用程序 。
CSS:是一種用來表現(xiàn)HTML或XML等文件樣式的計(jì)算機(jī)語言。最常用于Web樣式和HTML和Xhtml接口,該語言可以應(yīng)用與任何類型的XML文檔, CSS的設(shè)計(jì)主要是為了使文檔內(nèi)容從文檔表示的分離,包括元素,如布局、顏色和字體。
Java語言介紹
Java語言是SUN(Stanford University Network,斯坦福大學(xué)網(wǎng)絡(luò)公司 ) 在1995年推出的一 門高級(jí)編程語言。是一種面向Internet的編程語言。Java一開始富有吸引力是因?yàn)镴ava程序可以 在Web瀏覽器中運(yùn)行。這些Java程序被稱為Java小程序(applet)。applet使用現(xiàn)代的圖形用戶界面與Web用戶進(jìn)行交互。 applet內(nèi)嵌在HTML代碼中。 隨著Java技術(shù)在web方面的不斷成熟,已經(jīng)成為Web應(yīng)用程序的首選開發(fā)語言。
Java語言技術(shù)結(jié)構(gòu)
技術(shù)結(jié)構(gòu) | 主要用途 |
Java SE(Java Standard Edition)標(biāo)準(zhǔn)版 | 支持面向桌面級(jí)應(yīng)用(如Windows下的應(yīng)用程序)的Java平臺(tái),提供了完整的Java核 心API,此版本以前稱為J2SE |
Java EE(Java Enterprise Edition)企業(yè)版 | 是為開發(fā)企業(yè)環(huán)境下的應(yīng)用程序提供的一套解決方案。該技術(shù)體系中包含的技術(shù)如:Servlet 、Jsp等,主要針對(duì)于Web應(yīng)用程序開發(fā)。版本以前稱為J2EE |
Java ME(Java Micro Edition)小型版 | 支持Java程序運(yùn)行在移動(dòng)終端(手機(jī)、PDA)上的平臺(tái),對(duì)Java API有所精簡(jiǎn),并加 入了針對(duì)移動(dòng)終端的支持,此版本以前稱為J2ME |
Java Card | 支持一些Java小程序(Applets)運(yùn)行在小內(nèi)存設(shè)備(如智能卡)上的平臺(tái) |
Java語言主要應(yīng)用
從Java的應(yīng)用領(lǐng)域來分,Java語言的應(yīng)用方向主要表現(xiàn)在以下幾個(gè)方面
- 企業(yè)級(jí)應(yīng)用:主要指復(fù)雜的大企業(yè)的軟件系統(tǒng)、各種類型的網(wǎng)站。Java的安全機(jī)制以及 它的跨平臺(tái)的優(yōu)勢(shì),使它在分布式系統(tǒng)領(lǐng)域開發(fā)中有廣泛應(yīng)用。應(yīng)用領(lǐng)域包括金融、電 信、交通、電子商務(wù)等
- Android平臺(tái)應(yīng)用:Android應(yīng)用程序使用Java語言編寫。Android開發(fā)水平的高低 很大程度上取決于Java語言核心能力是否扎實(shí)
- 大數(shù)據(jù)平臺(tái)開發(fā):各類框架有Hadoop,spark,storm,flink等,就這類技術(shù)生態(tài) 圈來講,還有各種中間件如flume,kafka,sqoop等等 ,這些框架以及工具大多數(shù) 是用Java編寫而成,但提供諸如Java,scala,Python,R等各種語言API供編程
- 移動(dòng)領(lǐng)域應(yīng)用:主要表現(xiàn)在消費(fèi)和嵌入式領(lǐng)域,是指在各種小型設(shè)備上的應(yīng)用,包括手 機(jī)、PDA、機(jī)頂盒、汽車通信設(shè)備等
目前基本從事兩個(gè)階段,首先是企業(yè)級(jí)應(yīng)用方向,成為一名后端開發(fā)工程師,然后向大數(shù)據(jù)方向靠攏,安卓和移動(dòng)領(lǐng)域不適合大部分人,特殊機(jī)遇除外
Java主要特性
- Java語言簡(jiǎn)單易學(xué):Java語言的語法與C語言和C 語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java
- Java語言面向?qū)ο螅?/span>Java語言提供類、接口和繼承等原語,為了簡(jiǎn)單起見, 只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)
- Java跨平臺(tái)性:通過Java的虛擬機(jī),JVM可以實(shí)現(xiàn)一次編寫到處運(yùn)行的效果
- Java語言分布式:Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編 程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類 庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程 方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段
- Java語言的健壯性。Java的強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇
- Java語言的安全性。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊如:安全防范機(jī)制(類ClassLoader),如分配不同的 名字空間以防替代本地的同名類、字節(jié)代碼檢查
- Java語言對(duì)系統(tǒng)無侵入性:Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實(shí)現(xiàn)這個(gè) Java平臺(tái)的任何系統(tǒng)中運(yùn)行
- Java語言是解釋型語言:如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)的解釋器中運(yùn)行
- Java是的高性能:與那些解釋型的高級(jí)腳本語言相比,Java的性能還是較優(yōu)的,配合一些其他中間件可以發(fā)揮更強(qiáng)的性能
- Java語言原生支持多線程。在Java語言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來創(chuàng)建。多線程可以有效提升系統(tǒng)的響應(yīng)速度
Java的跨平臺(tái)性
不同的平臺(tái)對(duì)程序的解讀是不一致的,在需要運(yùn)行 Java 應(yīng)用程序的操作系統(tǒng)平臺(tái)上,先安裝一個(gè)Java虛擬機(jī) (JVM Java Virtual Machine) 。由JVM來負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行。如果安裝了JDK則自帶安裝好JVM。所以在不同的平臺(tái)上安裝對(duì)應(yīng)的JVM,Java程序和平臺(tái)之間有一個(gè)JVM當(dāng)做翻譯員,實(shí)現(xiàn)跨平臺(tái)性。
比如,你對(duì)一個(gè)中國(guó)人說“你好”,他明白是在問候,會(huì)給出正確的反饋,如果對(duì)一個(gè)美國(guó)人說“你好”,他就是一個(gè)問號(hào)了。JVM可以理解成翻譯員就行啦,和美國(guó)人交流需要懂英語的翻譯員,和韓國(guó)人交流需要懂韓語的翻譯員。
Linux上的JVM就比較懂Linux,Windows的JVM就比較懂Windows,那么,你懂了嗎?
Java運(yùn)行機(jī)制
Java的運(yùn)行機(jī)制主要分為兩個(gè)核心:
- Java虛擬機(jī) (Java Virtal Machine),簡(jiǎn)稱JVM
- 垃圾收集機(jī)制 (Garbage Collection),簡(jiǎn)稱GC
程序啟動(dòng)之后會(huì)運(yùn)行在JVM中,在運(yùn)行的過程中會(huì)產(chǎn)生垃圾,這個(gè)垃圾可以暫時(shí)理解為對(duì)電腦內(nèi)存的不必要的占用,GC是回收清理這些垃圾的工具,他也是在JVM中運(yùn)行的。
就比如我們生活在一個(gè)房間中,每天都會(huì)產(chǎn)生一些生活垃圾,這些垃圾會(huì)占用房間中的一些位置空間,這時(shí)你有一個(gè)保姆就是GC,它會(huì)定時(shí)去識(shí)別哪些是垃圾,然后將這些垃圾扔掉,存放垃圾的地方就騰出來可以放其他東西啦?。?!
JVM
JVM是一個(gè)虛擬的計(jì)算機(jī),具有指令集并使用不同的存儲(chǔ)區(qū)域。負(fù)責(zé)執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存、寄存器。
- 對(duì)于不同的平臺(tái),有不同的虛擬機(jī)。
- 只有某平臺(tái)提供了對(duì)應(yīng)的java虛擬機(jī),Java程序才可在此平臺(tái)運(yùn)行
- Java引入虛擬機(jī)的機(jī)制屏蔽了底層運(yùn)行平臺(tái)的差別,實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”
垃圾回收
對(duì)于有編程經(jīng)驗(yàn)的同學(xué)應(yīng)該知道,在C語言中資源的占用是需要我們手動(dòng)去釋放的,稍不注意就會(huì)產(chǎn)生內(nèi)存溢出,內(nèi)存泄漏的問題,Java相當(dāng)于一輛自動(dòng)擋汽車,引入垃圾回收機(jī)制,自動(dòng)把不需要的內(nèi)存資源回收掉。不再使用的內(nèi)存空間應(yīng)回收—— 垃圾回收。
- 在C/C 等語言中,由程序員負(fù)責(zé)回收無用內(nèi)存。
- Java 語言消除了程序員回收無用內(nèi)存空間的責(zé)任:它提供一種系統(tǒng)級(jí)線程跟蹤存儲(chǔ)空 間的分配情況。并在JVM空閑時(shí),檢查并釋放那些可被釋放的存儲(chǔ)空間。
- 垃圾回收在Java程序運(yùn)行過程中自動(dòng)進(jìn)行,程序員無法精確控制和干預(yù)。
當(dāng)然Java中的GC機(jī)制也不是萬金油,在某些極端情況下仍然會(huì)出現(xiàn)內(nèi)存溢出,我們可以通過實(shí)際情況修改參數(shù)和代碼,暫時(shí)就不用擔(dān)心啦
總結(jié):
- JVM是安裝在計(jì)算機(jī)上提供Java程序的運(yùn)行環(huán)境
- 不同的操作系統(tǒng)有不同的JVM,可以實(shí)現(xiàn)同一個(gè)Java程序不需要做任何修改,就可以運(yùn)行在不同的操作系統(tǒng)上
- Java還引入了GC也就是垃圾回收機(jī)制,會(huì)幫助我們自動(dòng)回收不需要再占用的內(nèi)存空間
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。