導航:首頁 > 源碼編譯 > 編譯技術和軟體工具

編譯技術和軟體工具

發布時間:2022-12-31 05:44:47

java 相關的編譯技術

除了 Java 的編譯器和虛擬機器之外 還有一些相關的編譯技術 本文章試圖做一個簡單的說明 JIT 編譯器 傳統的 Java 虛擬機器很愚蠢 將一道 bytecode 的指令翻譯成機器碼之後 馬上執行這些機器碼 執行完這批機器碼之後 就把這些機器碼丟了 接著再翻譯下一道 bytecode 的指令 繼續下去 即使下次執行到以前執行過的 bytecode 指令 依然要重新翻譯成機器碼才能執行 如此一來 效率當然不好 使用 JIT 編譯器(Just In Time piler)技術的虛擬機器比較聰明 會把常常執行的部分在第一次先翻譯好放在內存 以後再次執行到這里時 就不用再翻譯 直接從內存取出機器碼即可執行 這么一來 只要你的內存夠大 JIT 編譯器的技術夠好 你的 Java bytecode 執行速度也可以逼近純編譯式的程序 其它程序語言的編譯器 任何檔案只要符合 Java bytecode 的格式 就可以被 Java 虛擬機器執行 製造出 Java bytecode 的方式有許多種 不一定要使用 Java 語言來寫程序 才能編譯成 Java bytecode Java 是語言也是平台 你可以不使用 Java 語言(也就是 Java 編譯器) 只使用 Java 平台(也就是 Java 虛擬機器) 只要某語言有提供編譯器 能將該語言的原始碼編譯成 Java bytecode 格式 就可以在 Java 平台上執行 據我所知 目前已經有下列語言提供兼容於 Java 平台的編譯器(以英文字母順序排列) Aardappel Ada Agora BAMBOO Basic Bistro Bolero C C++ CLIPS COBOL Correlate Dawn E EcmaScript Eiffel Foo Forth Fortran Funnel Haskel Hojo javascript Jickle JIF Jinni Lisp LL LLP Logo Luck MINERVA Mini ML Mola NetRexx Nice Oberon Pascal PLAN Pnuts Prolog PS I python Sather Scheme SELF Simkin Small Talk Tcl WebL Yassl Yoix Yoyo 原生編譯器 如果你不在乎 Java 程序能否跨平台 你希望 Java 程序能如同 C/C++ 一般被編譯成機器碼而非 Java bytecode 那麼你可以使用 Java 原生編譯器(native piler) 目前已經有不少這樣的產品可以使用 Java 原生編譯器有兩大類 一類可以把 Java 的原始碼編譯成機器碼 另一類則可以把 Java bytecode 編譯成機器碼 反編譯與混淆器 Java bytecode 因為檔案格式簡單 信息保留完整 且指令是最簡單的堆棧式(stack based)架構等因素 所以很容易被反編譯(de pilation) 反編譯指的是和編譯相反的過程 對 Java 來說 反編譯就是把 Java bytecode 轉換成 Java 原始碼的過程 為了防止你辛苦地開發出來的 Java bytecode 被他人反編譯成原始碼 你可以透過混淆器(obfuscator)將你的 Java bytecode 轉換成更混亂的 Java bytecode 執行起來效果一樣 但是被混淆過的 Java bytecode 比較不容易被反編譯 你通常要為此付出一點代價 因為混淆過的程序執行速度通常會變慢 且混淆器只能增加反編譯的難度 不能保證你的程序一定無法被反編譯成功 畢竟道高一尺 魔高一丈 如果有人願意花許多時間和精力反編譯你的 Java bytecode 你根本就無法攔阻 組譯與反組譯 匯編語言(assembly)是一種非常接近機器碼的語言 將匯編語言轉成機器碼的工具稱為組譯器(assembler) 反過來將機器碼轉成匯編語言的工具稱為反組譯器(dissembler) 對於 Java 虛擬機器來說 Java bytecode 就如同它的機器碼 有沒有一種語言是很接近 Java bytecode 的呢?也就是說 Java 有沒有的匯編語言呢?基本上 Sun 並未定義 Java 的標准匯編語言 但是有一些人定義了自己的 Java 匯編語言 並提供 Java 的組譯器(甚至反組譯器) 例如 Ja *** in 以及 javaa 都是 Java 組譯器 前處理器 前處理器(pre processor)也稱為前編譯器(pre piler)或前翻譯器(pre translator) 其目的在將源碼中不符合語言規范的部分轉換成符合語言規范的形式 比方說 我們可能在 ??????????Java 源碼中除了使用 Java 語言之外 還穿插使用自訂的語法 這些自訂的語法無法被 Java 編譯器處理 所以我們必須先透過一個前處理器來將自訂語法的部分轉換成 Java 語言 然後就可以交由 Java 編譯器處理 目前有不少 Java 的前處理器 例如 iContract SQLJ 都是用來擴充 Java 語言之用的 最佳化工具軟體 一般來說 最佳化有兩種 讓檔案體積變小 可以節省儲存空間並加快網路傳送速度 讓執行速度變快 對於 Java 來說 還有第三種最佳化 讓程序結構變亂 不容易被反編譯 也就是前面提到過的混淆(obfuscation) 這三個目的之間常常互相排擠 結構變亂 通常會使得程序變慢 且體積變大 體積變小 通常會使得速度變慢 且結構變整齊 速度變快 通常會使得體積變大 且結構變整齊 lishixin/Article/program/Java/hx/201311/27007

編程工具和編譯工具分別是什麼 有什麼區別

平時所說的編程工具指的是一個ide,integrate
design
environment,集成開發環境,它包括了文本編輯工具,編譯工具,和鏈接工具,用他將生成一個可執行文件;編譯工具是將原程序編譯成目標程序。等待鏈接成可執行文件。

③ 軟體工程專業是學什麼的

軟體工程主要是學程序設計語言、資料庫、軟體開發工具、系統平台、設計模式等方面。

主幹學科:

馬克思主義理論、大學外語、高等數學、大學物理、物理實驗、線性代數、概率論與數理統計、程序設計語言、數據結構、離散數學、操作系統、編譯技術、軟體工程概論、統一建模語言、軟體體系結構、軟體需求、軟體項目管理。

該專業除了學習公共基礎課外,還將系統學習離散數學、數據結構、演算法分析、面向對象程序設計、現代操作系統、資料庫原理與實現技術、編譯原理、軟體工程、軟體項目管理、計算機安全等課程,根據學生的興趣還可以選修一些其它選修課。

實踐環節:畢業實習、課程設計、計算機工程實踐、生產實習、畢業設計(論文)。

軟體工程的目標是:

(1)適用性:軟體在不同的系統約束條件下,使用戶需求得到滿足的難易程度。

(2)有效性:軟體系統能最有效的利用計算機的時間和空間資源。各種軟體無不把系統的時/空開銷作為衡量軟體質量的一項重要技術指標。很多場合,在追求時間有效性和空間有效性時會發生矛盾,這時不得不犧牲時間有效性換取空間有效性或犧牲空間有效性換取時間有效性。時/空折衷是經常採用的技巧。

(3)可修改性:允許對系統進行修改而不增加原系統的復雜性。它支持軟體的調試和維護,是一個難以達到的目標。

(4)可靠性:能防止因概念、設計和結構等方面的不完善造成的軟體系統失效,具有挽回因操作不當造成軟體系統失效的能力。

(5)可理解性:系統具有清晰的結構,能直接反映問題的需求。可理解性有助於控制系統軟體復雜性,並支持軟體的維護、移植或重用。

(6)可維護性:軟體交付使用後,能夠對它進行修改,以改正潛伏的錯誤,改進性能和其它屬性,使軟體產品適應環境的變化等。軟體維護費用在軟體開發費用中佔有很大的比重。可維護性是軟體工程中一項十分重要的目標。

(7)可重用性:把概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件。可組裝在系統的任何位置,降低工作量。

(8)可移植性:軟體從一個計算機系統或環境搬到另一個計算機系統或環境的難易程度。

(9)可追蹤性:根據軟體需求對軟體設計、程序進行正向追蹤,或根據軟體設計、程序對軟體需求的逆向追蹤的能力。

(10)可互操作性:多個軟體元素相互通信並協同完成任務的能力。

以上內容參考:網路-軟體工程;網路-軟體工程專業

④ c語言編譯程序屬於應用軟體,系統軟體還是工具軟體

c語言編譯程序屬於系統軟體。

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。

這里的編譯程序是一種動作,是根據編譯原理技術,由高級程序設計語言編譯器翻譯成機器語言二進制代碼行為,因此它是系統軟體。

(4)編譯技術和軟體工具擴展閱讀:

應用軟體:是和系統軟體相對應的,是用戶可以使用的各種程序設計語言,以及用各種程序設計語言編制的應用程序的集合,分為應用軟體包和用戶程序。應用軟體包是利用計算機解決某類問版題而設計的程序的集合,供多用戶使用。比如瀏覽器、權網路雲管家等等都是應用軟體。

工具軟體:是指在使用電腦進行工作和學習時經常使用的軟體,比如電腦管家等殺毒軟體,一般工具軟體都屬於應用軟體。

⑤ 軟體工程一般要學什麼

01.軟體工程基礎知識免費下載

鏈接:https://pan..com/s/1VaFN2EcsQ39SHryP9iwSfw

提取碼:gis6

軟體工程是一門研究用工程化方法構建和維護有效、實用和高質量的軟體的學科。它涉及程序設計語言、資料庫、軟體開發工具、系統平台、標准、設計件有電子郵件、嵌入式系統、人機界面、辦公套件、操作系統、編譯器、資料庫、游戲等。同時,各個行業幾乎都有計算機軟體的應用,如工業、農業、銀行、航空、政府部門等。這些應用促進了經濟和社會的發展,也提高了工作效率和生活效率 。

⑥ 常用的編程語言及相應的軟體開發工具有哪些

編程語言俗稱「計算機語言」,種類非常的多,總的來說可以分 成機器語言、匯編語言、高級語言三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合, 而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。其中簡單的,可以分為低級語言和高級語言。
低級語言:是一種更接近計算機的語言(二進制語言),比如說匯編語言,效率高(速度快,完成同樣功能需要的代碼少),但不好學,不好編。
高級語言:更接近人類的自然語言 (編譯器),比如:
Fortran,Delphi,PowerBuilder,VB:比較過時
C,C++:運行效率高
asp,php:編寫web程序,就是網站
vbscript,javascript,python:腳本語言
HTML:標記語言,用於編寫網頁
css:樣式表語言,用於定義網頁的樣式風格
sql:用於操作資料庫中的數據 bigdata 海量數據
J2EE(java),.Net(C#,VB.Net,J#,...Asp.Net) JAVA 2 Enterprise Edition Sun公司 1995,Microsoft 2002年,具有後發優勢。
另外:
Android安卓開發(主要用Java語言)
IOS開發(用Objective C)

⑦ c語言編譯程序屬於應用軟體,系統軟體還是工具軟體

c語言編譯程序屬於系統軟體。

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。這里的編譯程序是一種動作,是根據編譯原理技術,由高級程序設計語言編譯器翻譯成機器語言二進制代碼行為。因此它是系統軟體。

計算機軟體總體分為系統軟體和應用軟體兩大類:系統軟體是各類操作系統,如windows、Linux、UNIX等,還包括操作系統的補丁程序及硬體驅動程序,都是系統軟體類。

應用軟體可以細分的種類就更多了,如工具軟體、游戲軟體、管理軟體等都屬於應用軟體類。電腦工具軟體就是指在使用電腦進行工作和學習時經常使用的軟體。

(7)編譯技術和軟體工具擴展閱讀:

不同點

1、表現形式不同

硬體有形,有色,有味,看得見,摸得著,聞得到。而軟體無形,無色,無味,看不見,摸不著,聞不到。軟體大多存在人們的腦袋裡或紙面上,它的正確與否,是好是壞,一直要到程序在機器上運行才能知道。這就給設計、生產和管理帶來許多困難。

2、生產方式不同

軟體是開發,它是人的智力的高度發揮,不是傳統意義上的硬體製造。盡管軟體開發與硬體製造之間有許多共同點,但這兩種活動是根本不同的。

3、要求不同

硬體產品允許有誤差,而軟體產品卻不允許有誤差。

4、維護不同

硬體是要用舊用壞的,在理論上,軟體是不會用舊用壞的,但在實際上,軟體也會變舊變壞。因為在軟體的整個生存期中,一直處於改變(維護)狀態。

網路-計算機軟體

⑧ 編譯器和編程軟體有什麼區別啊

編譯器就是將編程語言轉化為機器語言的東東。
編程軟體一般包含編譯器。比如VS。

閱讀全文

與編譯技術和軟體工具相關的資料

熱點內容
股市中帶星號的app是什麼 瀏覽:707
什麼路由可以刷機做列印機伺服器 瀏覽:5
電腦怎麼找到雲伺服器 瀏覽:871
微信怎麼發應用app 瀏覽:776
花生殼dns伺服器地址 瀏覽:648
squad伺服器一般什麼時候人多 瀏覽:479
程序員戰門課 瀏覽:474
config保存伺服器地址 瀏覽:317
預訂網吧座位的app叫什麼 瀏覽:416
香港伺服器主機地址 瀏覽:640
網店美工pdf 瀏覽:447
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944