天天用的開(kāi)發(fā)環(huán)境,你真的了解嗎?
![](http://image.woshipm.com/wp-files/img/83.jpg)
無(wú)論你從事的是Donet,還是Java;無(wú)論你是架構(gòu)師,還是編碼的開(kāi)發(fā)人員??梢赃@么說(shuō),幾乎每個(gè)程序員,都或多或少的有自己的編程習(xí)慣。不管是VS,還是Eclipse、MyEclipse、NetBeans,亦或是其他的開(kāi)發(fā)工具,大家都會(huì)根據(jù)自己的性格與習(xí)慣,個(gè)性化的設(shè)置自己的開(kāi)發(fā)工具。 我們使用這些工具,可以快速的進(jìn)行軟件開(kāi)發(fā),但是我想問(wèn)的是:對(duì)于這些工具是怎么樣工作的,你都了解嗎?我想未必。 之前,我做過(guò)一年Visual Basic的開(kāi)發(fā)。VB很簡(jiǎn)單,語(yǔ)法檢查不嚴(yán)格,盡管寫(xiě)的代碼非常不規(guī)范,但是它能運(yùn)行出結(jié)果!大家都知道,VB語(yǔ)言是有缺陷的,不規(guī)范、甚至不合理的代碼通常情況下能夠正常運(yùn)行,對(duì)于企業(yè)級(jí)開(kāi)發(fā),這是非常危險(xiǎn)的事情。不便于閱讀,不便于管理(當(dāng)然,不完全面向?qū)ο笫撬硪粋€(gè)軟肋)。同時(shí),這種語(yǔ)法檢查的不嚴(yán)格,也正是VB的一大優(yōu)點(diǎn):編程門(mén)檻低,好入門(mén)。我想也許就是VB語(yǔ)言延續(xù)至今的一個(gè)很重要的原因。 現(xiàn)在回想起來(lái),那時(shí)使用的VB開(kāi)發(fā)工具,其實(shí)是最復(fù)雜的。編碼、測(cè)試、運(yùn)行,一個(gè)VB開(kāi)發(fā)工具就全包了。這時(shí),或許你就知道,安裝一個(gè)VB的開(kāi)發(fā)環(huán)境,為什么需要花費(fèi)那么長(zhǎng)時(shí)間。因?yàn)樗粌H僅是一個(gè)IDE,更是要準(zhǔn)備一個(gè)編譯、運(yùn)行的環(huán)境。 相比而言,Visual Studio這款軟件就堪稱(chēng)完美了。之所以稱(chēng)它為完美,是因?yàn)樗鼛缀踝隽怂心茏龅氖虑椋?/p>
開(kāi)發(fā)中各種控件的支持、各種方式的調(diào)試、編譯、以及它的運(yùn)行,以及與UML相關(guān)功能相結(jié)合,等等??梢哉f(shuō),VS也是一個(gè)大熔爐。恰到好處的融匯了各種。不得不感嘆微軟巧奪天工的設(shè)計(jì)。這種設(shè)計(jì),大大的便利了開(kāi)發(fā)人員的開(kāi)發(fā)。程序員只需要遵守相關(guān)的規(guī)范,就可以及大可能的編寫(xiě)業(yè)務(wù)相關(guān)的代碼。像環(huán)境變量配置、插件配置、編程規(guī)范統(tǒng)一等等,微軟都已經(jīng)做好了,程序員需要做的就是遵守規(guī)范,只要你忍受的了微軟的條條框框,它就是你最得力的開(kāi)發(fā)工具。 它完美的就像《火影》里的佐助。注定了天之驕子的destiny。大家可以點(diǎn)此更多了解:Microsoft Visual Studio。 與VS相比,Java就沒(méi)有一個(gè)這么完美的工具了。起碼現(xiàn)在是沒(méi)有。那將來(lái)會(huì)不會(huì)有呢?我想不會(huì),像Eclipse,它擁有的就是一種殘缺的美。MyEclipse應(yīng)該是仿照VS在Eclipse基礎(chǔ)上做的,但是我想更多人選擇的會(huì)是Eclipse。 Java的開(kāi)發(fā)就不是一個(gè)工具就能解決的了。大家都知道:最基本的,首先需要安裝JDK(Java Development Kit)Java開(kāi)發(fā)工具包和Jre(Java Runtime Environment)Java運(yùn)行環(huán)境,以及需要用戶手動(dòng)配置相應(yīng)的環(huán)境變量。盡管如此還不夠,因?yàn)檫@樣還是僅僅能夠進(jìn)行簡(jiǎn)單的J2SE開(kāi)發(fā)。像企業(yè)級(jí)開(kāi)發(fā),就需要在Eclipse的基礎(chǔ)上安裝一些插件呀,與各種框架進(jìn)行集成了呀,必須有相應(yīng)的應(yīng)用服務(wù)器呀。它就需要用戶手動(dòng)做很多。 所以,我對(duì)Eclipse的最初認(rèn)識(shí)就是:它并沒(méi)有像VS一樣那么面面俱到,實(shí)現(xiàn)那么豐富的功能。它提供的僅僅是一個(gè)開(kāi)發(fā)環(huán)境以及不完整的調(diào)試環(huán)境(像遠(yuǎn)程調(diào)試、WebService等開(kāi)發(fā)的調(diào)試,Eclipse自身是非常吃力的,需要其他插件來(lái)集成)。 但是,隨著工作經(jīng)歷的增長(zhǎng),你會(huì)越來(lái)越發(fā)現(xiàn)Eclipse的牛X。Eclipse是綠色的,無(wú)需安裝,拷過(guò)來(lái)就能用。同時(shí),它能輕松的集成各種插件、集成各種框架、集成各種你想得到、想不到的工具。 Eclipse就像是《火影》里的鳴人,看似笨拙,自己沒(méi)啥功能;實(shí)則大巧若拙,以他人集成就會(huì)變成一把利器。 ?(好好想一想,實(shí)際中,Donet與Java確實(shí)像是鳴人跟佐助一樣~~~~) 我們來(lái)看看,Eclipse是怎樣輔助我們工作的: 上面已經(jīng)提到的,使用Eclipse可以依據(jù)JDK,進(jìn)行一般J2SE的開(kāi)發(fā)。編譯后的程序根據(jù)JRE中的java虛擬機(jī)就能夠運(yùn)行; Java的開(kāi)發(fā)中,開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境是分開(kāi)的,這點(diǎn)你必須要弄明白!所以,Eclipse提供了多種引入依賴包的方式: 在開(kāi)發(fā)環(huán)境中,像一個(gè)項(xiàng)目中的Jre、junit依賴包,或者你自己手動(dòng)建立的User Library引用包,這些依賴的jar在打包時(shí)是不會(huì)打進(jìn)項(xiàng)目jar或者war里面的,它們起到的作用只有一個(gè):輔助開(kāi)發(fā)。它們運(yùn)行時(shí)的運(yùn)行環(huán)境,就需要有它的運(yùn)行環(huán)境里面有相應(yīng)的依賴包。拿Jboss來(lái)舉例,開(kāi)發(fā)環(huán)境中引入的各種依賴,如果運(yùn)行時(shí)還需要這些依賴(比如測(cè)試的包可以不引入),那么在jboss的lib或者熱部署目錄就需要有這些包! 對(duì)于一個(gè)web項(xiàng)目,我們可以將依賴包考入項(xiàng)目的lib目錄下,那么在打包的時(shí)候,這些依賴包就會(huì)一起打入jar中。 如果我們用Maven管理項(xiàng)目,Maven有自己的一套打包規(guī)則。這些規(guī)則要區(qū)別于Eclipse開(kāi)發(fā)環(huán)境中引入的各種依賴,具體的說(shuō),與Eclipse開(kāi)發(fā)環(huán)境中引入的依賴,只有橫向關(guān)系沒(méi)有縱向關(guān)系。也就是說(shuō),他們僅僅是在開(kāi)發(fā)時(shí),方便開(kāi)發(fā)人員引入對(duì)應(yīng)的引用。 Maven打包時(shí),會(huì)根據(jù)Pom里面引入依賴設(shè)置的scope(這里不詳細(xì)介紹,具體內(nèi)容大家可以自己百度搜索,也可以關(guān)注我的后續(xù)介紹Maven的系列文章)屬性,根據(jù)這個(gè)值,Maven會(huì)選擇性將依賴打入Jar的依賴包或者不打入Jar的依賴包。同樣,如果不打入Jar的依賴包,運(yùn)行環(huán)境需要的話,就需要運(yùn)行環(huán)境里面有相應(yīng)的Jar包。 說(shuō)了這么多,你一定想要問(wèn)一句:Java開(kāi)發(fā),為什么需要將開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境分開(kāi)呢? 解耦合。Java世界中,沒(méi)有一家像微軟一樣“一言堂”的公司,為了和好的調(diào)和大家,Eclipse這種利用跟他人合作,放大自己光芒的方式,確實(shí)更高一籌。將開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境分開(kāi),無(wú)疑是為了解耦合。耦合解開(kāi)了,世界也就和諧了。 其實(shí),Eclipse就是一個(gè)老好人,另一個(gè)證據(jù)就是:我們可以到Mule的官網(wǎng)檔一個(gè)開(kāi)發(fā)環(huán)境下來(lái),我們會(huì)發(fā)現(xiàn),它就是一個(gè)Eclipse,在純粹的Eclipse的基礎(chǔ)上,安裝了一些插件,做了一些Mule所需要的自己的配置。 其實(shí),本文想要表達(dá)的意思就是講解一下java開(kāi)發(fā)的環(huán)境,以及它運(yùn)行時(shí),內(nèi)部是如何工作的。 同時(shí),也告訴大家:越是在我們身邊的熟悉的東西,我們?cè)绞遣灰欢私馑?shí)際的工作效率卻往往相反,我們?cè)绞橇私馑綍?huì)提高我們的工作效率,工作起來(lái)也輕松。 作者:劉正權(quán) 來(lái)源: CSDN 博客 VB
Donet
Java
- 目前還沒(méi)評(píng)論,等你發(fā)揮!