成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初步總結CLR和JRE運行機制

開發 后端
文章主要介紹了CLR和JRE運行機制,關于類庫的版本管理問題,JRE的版本管理,.Net Framework的版本管理,JRE的基礎類庫和.Net Framekwork的核心類庫。

大家有時往往對于一些基礎的概念很模糊,在這里我對幾個概念的比較JRE CLR(運行環境),JDK .Net Framework(開發框架)和JRE類庫的查找方法和版本管理,大家快來看看下面的介紹吧。

關于類庫的版本管理問題

Java和C#代碼運行要依靠其運行環境(JRE,CLR)和運行環境帶的基礎類庫(C#稱為配件或者程序集Assembly),此外還會有一些第三方的類庫或者自己開發的類庫。如果運行環境版本不一致,或者引用的類庫版本不一致都會帶來程序不能正常運行。比如一個Java程序是在JDK1.2上開發,如果在JRE1.4上運行,一般情況下可以向下兼容,但也有例外,有些GUI程序在JDK1.4上面運行結果很可能會不同。

CLR和JRE運行機制之JRE的版本管理

Java的解決辦法是每個程序自己攜帶一套JRE。
我的機器上已經被安裝了好多套JRE和JDK了(JDK包括了同版本的JRE,此外還包括有編譯器和其它工具),它們分別是:
◆BEA Weblogic Server 7.0 自帶一套 JDK1.3.1_02
◆我下載了一套最新的JDK1.4.1_02
◆JBuilder9自帶一套JKD1.4.1_02
◆Oracle8.1.7自帶一套JRE1.1.7
◆Ration Rose自帶一套JDK1.3
◆DreamWeaver自帶一套JDK1.3

6套JRE,每套JRE都被各自安裝到不同的目錄,不會互相影響。當在控制臺執行java.exe,操作系統尋找JRE的方式如下:
◆先找當前目錄下有沒有JRE
◆再找父目錄下有沒有JRE
◆接著在PATH路徑中找JRE
注冊表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的鍵值指向哪個JRE
最常用的是在PATH路徑中找JRE,一般情況下,自己的程序運行之前都會先在批處理文件里面臨時設置PATH,把自己用的JRE放到PATH路徑最前面,所以肯定會運行自己帶的JRE,不會造成版本混亂。

CLR和JRE運行機制之.Net Framework的版本管理

.Net Framework被固定安裝在C:\Winnt\Microsoft.NET\Framework\v版本號\目錄下,并且在同一臺機器只能安裝一套,要安裝1.1版本的.Net Framework,就必須先刪除1.0的。聽說剛發行的.Net Framework1.1已經對1.0做了很多改進,甚至基礎類庫的層次也有所變動??磥碓谂f版本的.Net Framework開發的程序將來往新版本上面遷移的時候少不了修改程序代碼。

JRE的基礎類庫

JRE自帶的基礎類庫主要是JRE\lib\rt.jar這個文件,包括了Java2平臺標準版的所有類庫。和JRE的版本一致。

.Net Framekwork的核心類庫

.Net Framekwork的核心類庫被放置在C:\Winnt\assembly\gac\目錄下,按照不同的名稱空間放在不同目錄中,不像JRE打成了一個包。并且可以同時存在不同的版本,例如:
某類庫1.0版本 C:\Winnt\assembly\gac\名稱\1.0\名稱.dll
某類庫1.1版本 C:\Winnt\assembly\gac\名稱\1.1\名稱.dll
這樣做,雖然很靈活,可以隨時把類庫更新到最新的狀態,但是很容易帶來版本管理的復雜度,造成版本不一致。

CLR和JRE運行機制之JRE類庫的查找方法和版本管理

JRE中由ClassLoader負責查找和加載程序引用到的類庫,基礎類庫ClassLoader會到rt.jar中自動加載,其它的類庫,ClassLoader在環境變量CLASSPATH指定的路徑中搜索,按照先來先到的原則,放在CLASSPATH前面的類庫先被搜到,Java程序啟動之前建議先把PATH和CLASSPATH環境變量設好,OS通過PATH來找JRE,確定基礎類庫rt.jar的位置,JRE的 ClassLoader通過CLASSPATH找其它類庫。但有時候會出現這樣的情況,希望替換基礎類庫中的類庫,那么也可以簡單的通過 -Djava.endrosed.path=...參數傳遞給java.exe,于是ClassLoader會先于基礎類庫使用 java.endrosed.path參數指定路徑的類庫。因此Java的版本管理是非常簡單有效的,也許很原始,不過很好用,簡單就不容易出錯。(所以我很奇怪Eric Ramond為什么批評Java的類庫管理機制,他還居然批評Java的接口,令人懷疑他對Java的了解程度)

【編輯推薦】

  1. CLR函數實現字符串排序七步通
  2. CLR線程池教程四大功能詳解
  3. CLR程序集教程新手上路
  4. 全面解析CLR是什么一點通
  5. 趣談CLR中的靜態構造函數
責任編輯:田樹 來源: mscto
相關推薦

2015-11-20 11:20:54

js開發

2010-09-28 11:05:49

jQuery

2019-05-10 14:00:21

小程序運行機制前端

2009-12-11 10:52:37

PHP運行機制

2009-02-03 14:00:20

PHP運行PHP調用PHP原理

2010-02-01 17:19:30

C++運行機制

2018-12-26 16:30:09

SQL Server內部運行機制數據庫

2010-01-05 16:10:21

.NET Framew

2019-08-15 10:17:16

Webpack運行瀏覽器

2023-05-26 08:01:01

FacebookVelox機制

2019-10-11 09:00:00

JavaScriptEvent Loop前端

2010-02-23 10:15:22

WCF運行機制

2012-03-06 10:22:00

程序

2016-12-14 14:41:20

Hello World程序運行機制

2016-12-13 14:12:25

程序機制

2015-11-16 11:17:30

PHP底層運行機制原理

2017-07-12 14:58:21

AndroidInstant Run

2010-05-06 17:54:54

Oracle鎖

2011-04-27 09:22:28

C#延遲加載

2022-02-11 23:11:09

Kubernetes集群容器化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩视频一区 | 久久性色 | 久久亚洲国产精品 | 国产精品一区二区福利视频 | 国产精品一区二区福利视频 | 美女午夜影院 | 视频在线亚洲 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 精品久久免费 | 97偷拍视频 | 亚洲视频中文字幕 | 91免费看片 | 成人黄色av网址 | 日韩久久精品 | 一区二区三区精品在线 | 亚洲在线| 视频二区国产 | 亚洲视频免费播放 | aaa综合国产 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 欧美a区 | 久久精品男人的天堂 | 中文字幕在线一区 | 欧美激情精品久久久久久变态 | 国产日产欧产精品精品推荐蛮挑 | 成人国产精品久久久 | 特级特黄特色的免费大片 | 国产偷自视频区视频 | 国产一级特黄视频 | 国产成人网 | 国产黄色小视频 | 国产欧美日韩精品一区 | 亚洲电影第三页 | 久久大| 欧美自拍网站 | 91九色在线观看 | 国产日韩欧美一区二区 | 精品久久久久久久久久久久久久 | 麻豆精品久久久 | 福利视频网站 | 日韩免费av网站 |