Java技術中的三大特性

為什么80%的碼農都做不了架構師?>>> ??hot3.png

1.虛擬機????????????????????????????????????????????????????????????????????????

Java虛擬機JVMJava Virtual Machine)在Java編程里面具有非常重要的地位,約相當于前面學到的Java運行環境,虛擬機的基本功能如下:

1):通過ClassLoader尋找和裝載class文件

2):解釋字節碼成為指令并執行,提供class文件的運行環境

3):進行運行期間垃圾回收

4):提供與硬件交互的平臺

Java虛擬機是在真實機器中用軟件模擬實現的一種想象機器。Java虛擬機代碼被存儲在?.class文件中;每個文件都包含最多一個public類。Java?虛擬機規范為不同的硬件平臺提供了一種編譯Java技術代碼的規范,該規范使Java?軟件獨立于平臺,因為編譯是針對作為虛擬機的“一般機器”而做。這個“一般機器”可用軟件模擬并運行于各種現存的計算機系統,也可用硬件來實現。編譯器在獲取Java應用程序的源代碼后,將其生成字節碼,它是為JVM生成的一種機器碼指令。每個Java解釋器,不管它是Java技術開發工具,還是可運行applets?Web瀏覽器,都可執行JVM

JVM為下列各項做出了定義

-???指令集(相當于中央處理器[CPU] )

-???寄存器

-???類文件格式

-???

-???垃圾收集堆

-???存儲區

JVM的代碼格式由緊縮有效的字節碼構成。由JVM字節碼編寫的程序必須保持適當的類型約束。大部分類型檢查是在編譯時完成。任何從屬的Java技術解釋器必須能夠運行任何含有類文件的程序,這些類文件應符合Java虛擬機規范中所指定的類文件格式。

?

1.1?虛擬機是Java平臺無關的保障

正是因為有虛擬機這個中間層,Java才能夠實現與平臺無關。虛擬機就好比是一個Java運行的基本平臺,所有的Java程序都運行在虛擬機上.?

Java源程序(*.java文件)

Java類文件(*.class文件)

編譯

平臺無關

平臺相關

Java虛擬機

被裝載進入虛擬機

Linux

Windows

Unix

解釋執行字節碼文件????????????

?

2.垃圾回收?????????????????????????????????????????????????????????????????????

2.1?什么是垃圾

在程序運行的過程中,存在被分配了的內存塊不再被需要的情況,那么這些內存塊對程序來講就是垃圾。

產生了垃圾,自然就需要清理這些垃圾,更為重要的是需要把這些垃圾所占用的內存資源,回收回來,加以再利用,從而節省資源,提高系統性能。

?

2.2?垃圾回收

-?????????不再需要的已分配內存應取消分配(釋放內存)

-?????????在其它語言中,取消分配是程序員的責任

-?????????Java編程語言提供了一種系統級線程以跟蹤內存分配

-?????????垃圾收集

-?????????可檢查和釋放不再需要的內存

-?????????可自動完成上述工作

-?????????可在JVM實現周期中,產生意想不到的變化

許多編程語言都允許在程序運行時動態分配內存,分配內存的過程由于語言句法不同而有所變化,但總是要將指針返回到內存的起始位置,當分配內存不再需要時(內存指針已溢出范圍),程序或運行環境應釋放內存。

CC++?或其它語言中,程序員負責釋放內存。有時,這是一件很困難的事情。因為你并不總是事先知道內存應在何時被釋放。當在系統中沒有能夠被分配的內存時,可導致程序癱瘓,這種程序被稱作具有內存漏洞。

Java編程語言解除了程序員釋放內存的責任。它可提供一種系統級線程以跟蹤每一次內存的分配情況。在Java虛擬機的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的內存。垃圾收集在Java技術程序的生命周期中自動進行,它解除了釋放內存的要求,這樣能夠有效避免內存漏洞和內存泄露(內存泄露就是程序運行期間,所占用的內存一直往上漲,很容易造成系統資源耗盡而降低性能或崩潰)。

?

2.3?提示

1Java里面,垃圾回收是一個自動的系統行為,程序員不能控制垃圾回收的功能和行為。比如垃圾回收什么時候開始,什么時候結束,還有到底哪些資源需要回收等,都是程序員不能控制的。

2有一些跟垃圾回收相關的方法,比如:System.gc() ,?記住一點,調用這些方法,僅僅是在通知垃圾回收程序,至于垃圾回收程序運不運行,什么時候運行,都是無法控制的。

3程序員可以通過設置對象為null(后面會講到)來標示某個對象不再被需要了,這只是表示這個對象可以被回收了,并不是馬上被回收。

?

3.代碼安全?????????????????????????????????????????????????????????????????????

Java如何保證編寫的代碼是安全可靠的呢?

1)第一關:編寫的代碼首先要被編譯成為class文件,如果代碼寫得有問題,編譯期間就會發現,然后提示有編譯錯誤,無法編譯通過。

2)第二關:通過編譯關后,在類裝載的時候,還會進行類裝載檢查,把本機上的類和網絡資源類相分離,在調入類的時候進行檢查,因而可以限制任何“特洛伊木馬”的應用。

3)第三關:類裝載后,在運行前,還會進行字節碼校驗,以判斷你的程序是安全的。

4)第四關:如果你的程序在網絡上運行,還有沙箱(Sand Box)的保護,什么是沙箱呢?就是如果你的程序沒有獲得授權,只能在沙箱限定的范圍內運行,是不能夠訪問本地資源的,從而保證安全性。?

?

Compile

HelloWorld.java

HelloWorld.class

Javac

Network

Class Loader

Java

Byte code verifier

Interpreter

Hardware

Runtime

編譯檢查

裝載檢查

字節碼校驗

Runtime

沙箱保護

http://sishuok.com/forum/blogPost/list/1732.html?

轉載于:https://my.oschina.net/itommy/blog/845468

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396664.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab圖像增強分段線性函數_圖像增強、銳化,利用 PythonOpenCV 來實現 4 種方法!...

圖像增強目的使得模糊圖片變得更加清晰、圖片模糊的原因是因為像素灰度差值變化不大,圖片各區域產生視覺效果似乎都是一樣的, 沒有較為突出的地方,看起來不清晰的感覺解決這個問題的最直接簡單辦法,放大像素灰度值差值、使圖像中的…

python多人聊天室_Python基于Socket實現簡易多人聊天室

前言套接字(Sockets)是雙向通信信道的端點。 套接字可以在一個進程內,在同一機器上的進程之間,或者在不同主機的進程之間進行通信,主機可以是任何一臺有連接互聯網的機器。套接字可以通過多種不同的通道類型實現:Unix域套接字&…

計算機考研保護一志愿,考研良心大學,保護一志愿的考研名校!

大家好,我是,今天胖胖要跟大家送一些重要的干貨,就是對于選學校的小伙伴來說也好,或者是即將要參加研究生復試的小伙伴們來好胖胖在這里要跟大家說一個關于考研白名單的事情,因為大家都知道考研是會分黑名單和白名單&a…

python變量輸出到文件_使用函數將多個變量寫入文件

首先,要獲得當前正在執行的腳本名,或者更確切地說是調用函數的模塊,必須從堆棧跟蹤中獲取它。globals()-它將在writeToValues()函數的相同上下文中執行,因此它不會從“調用者”接收globals()。要糾正這種情況,您可以使…

嵌入式linux系統移植的四大步驟_嵌入式系統移植步驟

在嵌入式系統移植中重要的一部分是操作系統的移植,與其它操作系統相比,Linux大的特點:它是一款遵循GPL的操作系統,我們可以自由地使用、修改、和擴展它。正是由于這一特色,嵌入式系統移植過程中Linux系統受到越來越多人…

sdn框架的計算機網絡管理,清華SDN實踐--SDN 系統架構與數據中心應用

清華大學在SDN 的系統架構以及其在數據中心網絡中的應用方面展開了深入研究,主要研究成果包括:1. 以數據為中心的軟件定義網絡架構 SODA(Software Defined Data Centric Networking)。與 OpenFlow 相比,SODA 大大增強了數據層面的處理能力&am…

《軟件工程》課之-調查問卷的心得體會

1.這次調查是艱辛的。 2.很多人都誤以為我在發小廣告。。 3.很多人都不認識俄羅斯方塊1010這個游戲。 4.大家對于游戲的見解千奇百怪。 5.題目出的不是很完美,下次改進。。 6.簡單分析下結果,男孩子都喜歡多人的游戲,女孩的喜歡的多種多樣&am…

python循環語句for求和_for循環簡介

## for循環簡介for循環可以用來遍歷某一對象(遍歷:通俗點說,就是把這個循環中的第一個元素到最后一個元素依次訪問一次)。for循環的基本結構如下:![](https://img.kancloud.cn/75/33/753371a9536ed9eeb159074482ec85f0_558x174.png)說明&…

華為備份歷史版本_華為手機NAS備份時提示“需處于同一局域網”的解決方法

本內容來源于什么值得買APP,觀點僅代表作者本人 |作者:噩夢飄雷創作立場聲明:在使用華為手機向群暉NAS中備份時發現一直無法成功,經過一番研究找到了解決方案,希望能幫到大家~前言最近看了一位老哥的帖子&a…

計算機系統集成難點,企業MES實施中存在的難點及建議

MES是企業生產管理服務的核心信息化系統。實施MES是為了將現代企業生產管理思想、理念引入企業生產管理,對企業生產管理流程進行重組和優化,促進企業生產管理水平的提高。可是作用如此大的MES系統在實施過程中能一路無阻嗎?MES系統的作用1.車…

【原創】自己編寫的JavaGUI一鍵生成(hibernate/spring/mvc/maven)工具(附帶視頻教程源碼)...

為什么80%的碼農都做不了架構師?>>> 帶項目源碼(https://git.oschina.net/qsyan/GeneratorFx) app下載地址(附帶視頻教程):http://download.csdn.net/detail/juyan2008/9769406 注明:此應用采用javafx編寫…

2018-2019 20165203 《信息安全系統設計基礎》第一周學習總結

2018-2019-1 20165203 《信息安全系統設計基礎》第一周學習總結 教材學習內容總結 編譯:gcc [選項] [文件名]選項參數表 參數對應功能-E僅執行編譯預處理-S將.c代碼轉換為匯編語言代碼-c僅執行編譯操作,不進行連接操作-o指定生成的輸出文件-I (大寫)指定…

普通計算機怎么算根號_大學專業介紹 | 計算機專業的真實就業情況

前兩天給大家簡單介紹了近些年比較火的計算機類相關專業具體都有哪些不同,以及就業時的行業或者崗位的側重點。今天呢我們繼續這個話題,來聊一聊整個計算機相關專業在學習和就業過程中大概是什么樣子的,希望能夠給大家提供一些實實在在的參考…

設計模式總結篇系列:工廠方法模式(Factory Method)

工廠方法模式適合于對實現了同一接口或繼承了同一父類的一些類進行實例的創建。一般是通過定義一個工廠類,并在其方法中實現對具有上述特點的類對象的創建。 根據具體產生類對象的方法定義形式,又可以將其分為普通工廠方法模式、多個工廠方法模式和靜態工…

高新園區到大連計算機學校,大連高新區中心小學

大連市高新區中心小學簡介:大連市高新區中心小學始建于2009年9月,是大連高新技術產業園區籌建的第一所直屬公辦學校。學校現擁有2000多名學生,87名教職員工。學校確定了“辦詩韻教育,讓每個孩子都幸福的教育理念”,通過…

java基礎之匿名內部類

內部類:   概述: 類里邊還有一個類, 里邊那個類叫內部類, 外邊那個類叫外部類.   分類:  成員內部類: 定義在成員位置的內部類.  局部內部類: 定義在局部位置的內部類. 格式:   new 類名或者接口名(){     //重寫類或者接口中 所有的 抽象方法;   };本質:  就…

0限流電阻 stm32_上/下拉電阻

除了前一節討論的拉電阻基本使用方法外,上拉電阻也可以提升高電平的電壓閾值,以便于前后級信號相匹配,比如,TTL邏輯電平驅動CMOS邏輯電平時,我們通常會添加一個上拉電阻R1,如下圖所示:But Why&a…

天地與我并存/萬物與我為一 2

http://blog.sina.com.cn/s/blog_17e792e010102y4lu.html 庖丁解牛 先秦:莊周 吾生也有涯,而知也無涯 。以有涯隨無涯,殆已!已而為知者,殆而已矣!為善無近名,為惡無近刑。緣督以為經&#xff0c…

網段和子網的區別_電焊石籠網與普通石籠網區別

對于石籠網,每個人都會想到在河中,橋梁附近和大壩上充滿石頭的籠子結構。今天,我們談論的是石籠網的一種電焊石籠網,它也是一種常見的石籠網,也被稱為六邊形石籠網。其功能與石籠網相同,但用法與普通石籠網…

jquery $(document).ready() 與window.onload的區別

轉載博客:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用類似于傳統JavaScript中的window.onload方法,不過與window.onload方法還是有區別的。 1.執行時間 window.onload必須等到頁面內包括圖片的所有元素加載完畢后…