跨平臺的整合開發環境可強化企業生產力
C/C++跨平臺的問題
繼C++Builder之後,Borland推出全新跨平臺的C++BuilderX。由於Borland只有開發Windows平臺的C/C++編譯器,因此C++Builder是專注於Windows平臺;而C++BuilderX目前支援Windows、Linux及Solaris平臺,內建支援Borland C++ Compiler、GNU Compiler Collection、Sun Forte C++及Microsoft C++ Compiler等多種常用的C/C++編譯器及除錯器,允許開發人員在開發環境中自由切換編譯器,未來也將支援麥金塔作業系統。雖然目前尚未支援.NET,不過,使用者也可自行加入Visual C++及Visual C++ .NET編譯器。
目前C++BuilderX強調的重點,在於其跨平臺及支援Symbian作業系統的特性,Borland預估未來C++BuilderX 2.0版,將提供完整的視覺化RAD(Rapid Application Development)的開發環境,讓開發人員可以滑鼠拖曳的方式,設計使用者介面,並進一步支援.NET及Pocket PC、Smartphone等行動裝置。
C與C++常常擺在一起一併討論的原因,主要是C++基本上與C的語法相同,只是C++多了物件導向的技術,而C是程序導向的語言。一般而言,C++的編譯器均可編譯C語言的程式,但反過來C的編譯器無法編譯C++程式。
事實上,C/C++推行之初即相當強調跨平臺的特性,不過至今仍存在許多問題,因為針對各種處理器及作業系統設計的眾多C/C++編譯器,均有各自的程式庫(Library),不像Java有統一的執行環境及程式庫。即使編譯器多會支援ANSI C的標準,但ANSI C的版本從C95到C99,Borland的C++Builder已百分之百相容於ANSI C99,不過各編譯器之間可能因為支援ANSI C的版本不同而出現問題。
此外,各家C/C++編譯器多在ANSI C標準外,加入專屬的函式,也就因為沒有統一的程式庫,所以同樣的程式碼,以不同的編譯器編譯可能會出現錯誤訊息。即使使用標準ANSI C的語法,也可能因為支援的ANSI C版本不同而發生錯誤,使得C++跨平臺的理想困難重重。不過,目前編譯器已有標準化的趨勢,相信未來不相容的問題可逐漸排除。同是跨平臺, C/C++與Java作法不同
C/C++的優勢在於 作業系統及硬體控制能力
分析C/C++及Java的跨平臺技術,大不相同也各有利弊,Java有標準統一的JDK程式庫及JVM(Java Virtual Machine;Java虛擬機器)執行環境,程式碼編譯成中介碼後,即可在任何平臺的Java虛擬機器上執行;而C/C++的程式碼必須設定部署的平臺、程式庫及編譯器,編譯成原生執行碼,才能在特定的平臺執行,雖然作法比較麻煩,但是效能較佳。
也就是說若完全遵循ANSI C的標準且版本相同,各家編譯器的語法及語義皆相同,是可以達到原始程式碼的標準化,不過C/C++的執行環境並未標準化,必須針對各平臺產生原生執行檔,應用程式若要跨平臺,例如移植應用程式到Solaris作業系統,需在Solaris安裝C++BuilderX,切換支援UltraSPARC處理器及Solaris作業系統的編譯器,重新編譯程式碼才能產生執行檔。
以C++BuilderX新增專案時,系統會要求勾選部署的平臺及支援的編譯器,兩者均可複選,系統會將不同編譯器編譯的執行檔,分布在不同的資料夾,Windows平臺的應用程式可直接編譯並執行,Linux及Solaris平臺的應用程式,則必須移植到相對的作業系統,再重新編譯才能產生執行檔。
Java跨平臺的優點,是只要編譯成中介碼,即可搭配針對各種平臺設計的虛擬機器,相較於C/C++必須依不同的處理器、作業系統及編譯器,產生不同的執行檔方便。不過就因為Java透過多一層的虛擬機器,難免犧牲效能,而C/C++原生執行環境可保有最佳的效能。在 Java技術及成熟度不斷精進,及電腦效能不斷提升的情況下,未來Java與C/C++之間效能的差距可望逐漸縮短。
由於C/C++擁有較佳的硬體及作業系統控制能力、執行效能及跨平臺移植性,因此適合低階的應用,多使用開發作業系統及硬體驅動程式。在國外也有企業使用C/C++開發應用系統的例子,不過臺灣的案例較少。
Java搭配EJB的J2EE企業級應用系統,基本上C/C++搭配CORBA技術也可完成,但由於Java的語法簡潔,高階的企業應用較為方便,而C/C++的開發技術難度及時間成本較高,又存在跨平臺的問題,因此除非對效能要求嚴苛的系統,否則企業使用來開發伺服器端應用程式的意願不高。以wxWindows作為基礎平臺
可開發Symbian 作業系統應用程式
為簡化開發圖形使用者介面的困難度,開發工具多提供方便的視覺化元件程式庫,可以滑鼠拖放的方式,設計使用者介面。過去Borland以Object Pascal自行開發的VCL(Visual Component Library),即為Delphi及C++Builder的圖形使用者介面基礎平臺(GUI Framework),Linux版的Kylix則以CLX作為圖形使用者介面基礎平臺。相對的,微軟的Visual C++則使用MFC作為圖形使用者介面基礎平臺。
為達到跨平臺的目的,C++BuilderX以GNU的wxWindows為圖形使用者介面基礎平臺,wxWindows是免費的開放原始程式碼,Borland以wxWindows為基礎進一步加值提供更多元件。wxWindows支援多種平臺,可呼叫各平臺例如Windows系統的System DLL、Linux系統的Xwindow等的原生API,以較佳的效率產生圖形使用者介面。未來C++BuilderX將反過來支援VCL,以提供Borland用戶熟悉的操作介面。
目前出貨的C++BuilderX均附加一片Preview光碟,開發人員可安裝體驗wxWinodws的應用,Borland預計明年推出的C++BuilderX 2.0版,將可推出更完整的視覺化RAD開發環境,供使用者設計豐富的圖形使用者介面。
由於Symbian本身即是以C/C++開發的作業系統,所以透過C/C++開發應用程式最為直覺,雖然Java也可開發手機應用程式,但由於高階手機具有較強的計算能力,在手機有限的空間內再負載虛擬機器,難以發揮最佳功效,以C/C++開發應用程式將可提供較強大的功能。例如Nokia 30及60系列手機均支援Java應用程式,而Nokia 90系列Symbian作業系統手機,則搭配C/C++開發應用程式。
C++BuilderX支援開發Symbian作業系統應用程式,開發人員需先安裝Symbian OS SDK,才能開發相關應用程式。Symbian是C++BuilderX支援行動裝置的第一步,Borland未來將進一步支援Pocket PC及Smartphone等更多行動裝置。包含Intel軟體開發解決方案
Borland為提升程式碼的執行效能,雖然一般C/C++程式庫均提供通用的運算函式庫,不過Intel本身最了解Intel處理器的特性,所以C++BuilderX針對Intel處理器,提供軟體開發解決方案。C++BuilderX內建Intel C++編譯器,並可以Intel Vtune效能分析器找出效能瓶頸。並針對多媒體及數學運算,提供Intel Integrated Performance Primitives及Intel Math Kernel Library。
Intel Integrated Performance Primitives可設計最佳化的多媒體功能相關的應用程式;Intel Math Kernel Library則可建構複雜運算的解決方案,確保應用程式在Intel架構上擁有最佳的執行效能。克服異質編譯器及平臺支援問題
微軟為讓.NET平臺也可以開發C/C++應用程式,增加了許多非標準的程式庫,而C++BuilderX是完全純C++的開發工具,所以目前尚未支援.NET,不過開發人員仍可自行加入Visual C++.NET編譯器,即可編譯.NET程式。未來C++BuilderX除了將提供完整視覺化RAD開發環境,及支援各種行動裝置外,也將會支援.NET。
當應用程式的執行效能、程式碼大小、低階硬體功能及資源存取為主要考量時,C/C++往往是最常見的選擇。C++BuilderX支援多種編譯器的好處,是於各平臺提供統一的整合開發環境,允許開發人員自由切換編譯器,降低開發人員的學習成本,並減少組態設定及平臺轉換的麻煩。文⊙李延華
熱門新聞
2025-02-26
2025-02-25
2025-02-26
2025-02-24
2025-02-24