本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種在java環(huán)境中執(zhí)行程序的方法及系統(tǒng)。
背景技術(shù):因人們對(duì)于傳統(tǒng)電視的習(xí)慣,人們不希望智能電視出現(xiàn)死機(jī)等情況。而在目前實(shí)際的軟件開發(fā)中,大部分程序(應(yīng)用程序)都是在java環(huán)境(java應(yīng)用程序的環(huán)境)中開發(fā)的,而且需要執(zhí)行其他可執(zhí)行程序來完成功能。在目前的java環(huán)境中尤其是andriod系統(tǒng)下的java環(huán)境中,執(zhí)行其他程序,特別是命令行程序,需要使用系統(tǒng)固有的API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)。傳統(tǒng)的java環(huán)境中執(zhí)行其他程序時(shí),只能調(diào)用java標(biāo)準(zhǔn)的exec(executive,執(zhí)行)接口來執(zhí)行程序。在目前的java環(huán)境中,用戶在調(diào)用exec接口時(shí),java虛擬機(jī)會(huì)調(diào)用系統(tǒng)的C程序接口完成進(jìn)程的創(chuàng)建,并且進(jìn)行必要的資源同步,然后在新創(chuàng)建的子進(jìn)程中執(zhí)行該命令,同時(shí)父進(jìn)程(即調(diào)用exec接口的進(jìn)程)等待子進(jìn)程退出,直到子進(jìn)程完全執(zhí)行完成,并且需要父進(jìn)程也監(jiān)聽到,用戶程序才能繼續(xù)往下執(zhí)行。由此可見,系統(tǒng)固有的方式容易導(dǎo)致以下兩個(gè)結(jié)果:1、應(yīng)用程序在調(diào)用過程中java父進(jìn)程被阻塞,與用戶交互的應(yīng)用程序界面停止(即死機(jī))。2、需要執(zhí)行的其他程序也不能得到執(zhí)行,這些情況都將嚴(yán)重影響智能電視的用戶體驗(yàn)。因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
技術(shù)實(shí)現(xiàn)要素:鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種在java環(huán)境中執(zhí)行程序的方法及系統(tǒng),旨在解決目前java環(huán)境中程序執(zhí)行不穩(wěn)定、程序執(zhí)行過程中易死機(jī)、程序及系統(tǒng)穩(wěn)定性不高等問題。本發(fā)明的技術(shù)方案如下:一種在java環(huán)境中執(zhí)行程序的方法,其中,包括步驟:A、創(chuàng)建后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;B、在java應(yīng)用環(huán)境中創(chuàng)建客戶端,并將創(chuàng)建的客戶端連接至所述服務(wù)器端;C、通過客戶端將需要執(zhí)行程序的程序信息發(fā)送至服務(wù)器端;D、所述服務(wù)器端根據(jù)所述客戶端發(fā)來的程序信息,執(zhí)行相應(yīng)的程序,并返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。所述的在java環(huán)境中執(zhí)行程序的方法,其中,所述步驟A具體包括:A1、當(dāng)系統(tǒng)啟動(dòng)時(shí),創(chuàng)建后臺(tái)守護(hù)進(jìn)程;A2、將創(chuàng)建的后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;A3、通過作為服務(wù)器端的后臺(tái)守護(hù)進(jìn)程持續(xù)監(jiān)聽客戶端的請(qǐng)求。所述的在java環(huán)境中執(zhí)行程序的方法,其中,所述步驟B具體包括:B1、在java應(yīng)用環(huán)境中創(chuàng)建客戶端;B2、所述客戶端向所述服務(wù)器端發(fā)送連接請(qǐng)求;B3、當(dāng)所述服務(wù)器端接收所述連接請(qǐng)求后,與所述客戶端建立連接。所述的在java環(huán)境中執(zhí)行程序的方法,其中,所述步驟C中,所述程序信息包括程序的名稱、路徑、程序執(zhí)行所需的命令及參數(shù)。所述的在java環(huán)境中執(zhí)行程序的方法,其中,所述步驟D具體包括:D1、所述服務(wù)器端接收到程序信息后,根據(jù)程序信息生成執(zhí)行程序進(jìn)程;D2、所述服務(wù)器端通過該執(zhí)行程序進(jìn)程對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理;D3、處理完成后,所述服務(wù)器端返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。所述的在java環(huán)境中執(zhí)行程序的方法,其中,所述步驟D2中,所述執(zhí)行程序進(jìn)程直接在命令行中對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理。一種在java環(huán)境中執(zhí)行程序的系統(tǒng),其中,其包括:服務(wù)器端創(chuàng)建模塊,用于創(chuàng)建后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;客戶端創(chuàng)建模塊,用于在java應(yīng)用環(huán)境中創(chuàng)建客戶端,并將創(chuàng)建的客戶端連接至所述服務(wù)器端;客戶端,用于將需要執(zhí)行程序的程序信息發(fā)送至服務(wù)器端;服務(wù)器端,用于根據(jù)所述客戶端發(fā)來的程序信息,執(zhí)行相應(yīng)的程序,并返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。所述的在java環(huán)境中執(zhí)行程序的系統(tǒng),其中,所述客戶端創(chuàng)建模塊包括:客戶端創(chuàng)建單元,用于在java應(yīng)用環(huán)境中創(chuàng)建客戶端;連接請(qǐng)求發(fā)送單元,用于向所述服務(wù)器端發(fā)送連接請(qǐng)求;連接單元,用于當(dāng)所述服務(wù)器端接收所述連接請(qǐng)求后,與所述客戶端建立連接。所述的在java環(huán)境中執(zhí)行程序的系統(tǒng),其中,所述服務(wù)器端包括:執(zhí)行程序進(jìn)程生成單元,用于所述服務(wù)器端接收到程序信息后,根據(jù)程序信息生成執(zhí)行程序進(jìn)程;程序處理單元,用于通過該執(zhí)行程序進(jìn)程對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理;處理結(jié)果返回單元,用于處理完成后,返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。有益效果:本發(fā)明在java環(huán)境中執(zhí)行程序的方法及系統(tǒng),通過創(chuàng)建服務(wù)器端和客戶端的方式,將java環(huán)境中需要執(zhí)行的程序通過在服務(wù)器端直接進(jìn)行執(zhí)行處理,解決了java環(huán)境中程序執(zhí)行不穩(wěn)定的問題,將本發(fā)明應(yīng)用在智能電視領(lǐng)域,將提高智能電視程序的開發(fā)質(zhì)量和整個(gè)系統(tǒng)的穩(wěn)定性。附圖說明圖1為本發(fā)明在java環(huán)境下執(zhí)行程序的方法較佳實(shí)施例的流程圖。圖2為圖1所示方法中創(chuàng)建客戶端實(shí)施例的流程圖。圖3為圖1所示方法中客戶端連接服務(wù)器端實(shí)施例的流程圖。圖4為圖1所示方法中服務(wù)器端處理程序?qū)嵤├牧鞒虉D。圖5為本發(fā)明在java環(huán)境下執(zhí)行程序的方法另一個(gè)實(shí)施例的流程圖。圖6為本發(fā)明在java環(huán)境下執(zhí)行程序的系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)圖。圖7為圖6所示系統(tǒng)中客戶端創(chuàng)建模塊的結(jié)構(gòu)圖。圖8為圖6所示系統(tǒng)中服務(wù)器端的結(jié)構(gòu)圖。具體實(shí)施方式本發(fā)明提供一種在java環(huán)境中執(zhí)行程序的方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明在java環(huán)境中執(zhí)行程序的方法的一個(gè)實(shí)施例,如圖1所示,其包括步驟:S101、創(chuàng)建后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;其中,后臺(tái)守護(hù)進(jìn)程可以創(chuàng)建在當(dāng)前運(yùn)行的操作系統(tǒng)中,例如android系統(tǒng)、windows系統(tǒng)等。S102、在java應(yīng)用環(huán)境中創(chuàng)建客戶端,并將創(chuàng)建的客戶端連接至所述服務(wù)器端;S103、通過客戶端將需要執(zhí)行程序的程序信息發(fā)送至服務(wù)器端;所述的程序信息具體包括:程序的名稱、路徑、程序執(zhí)行所需的命令及參數(shù),這些程序信息都是在java環(huán)境中由客戶端發(fā)送給服務(wù)器端。S104、所述服務(wù)器端根據(jù)所述客戶端發(fā)來的程序信息,執(zhí)行相應(yīng)的程序,并返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。首先在步驟S101中,創(chuàng)建服務(wù)器端,如創(chuàng)建后臺(tái)守護(hù)進(jìn)程,所述后臺(tái)守護(hù)進(jìn)程為一種開機(jī)即可運(yùn)行的程序,當(dāng)系統(tǒng)啟動(dòng)后,即可創(chuàng)建該后臺(tái)守護(hù)進(jìn)程,并將該后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端,同時(shí)利用所述服務(wù)器端監(jiān)聽客戶端的請(qǐng)求,如客戶端的連接請(qǐng)求。步驟S101可具體細(xì)化為如圖2所示的流程,即:S201、當(dāng)系統(tǒng)啟動(dòng)時(shí),創(chuàng)建后臺(tái)守護(hù)進(jìn)程;S202、將創(chuàng)建的后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;S203、通過作為服務(wù)器端的后臺(tái)守護(hù)進(jìn)程持續(xù)監(jiān)聽客戶端的請(qǐng)求。本發(fā)明所述的java環(huán)境指的是java應(yīng)用程序環(huán)境。在步驟S102中,如圖3所示,其具體可包括步驟:S301、在java應(yīng)用環(huán)境中創(chuàng)建客戶端;此步驟是指在java應(yīng)用程序的環(huán)境中按照需要?jiǎng)?chuàng)建客戶端。S302、所述客戶端向所述服務(wù)器端發(fā)送連接請(qǐng)求;當(dāng)客戶端創(chuàng)建完畢,所述客戶端便向服務(wù)器端發(fā)送連接請(qǐng)求。S303、當(dāng)所述服務(wù)器端接收所述連接請(qǐng)求后,與所述客戶端建立連接。當(dāng)服務(wù)器端接收到連接請(qǐng)求時(shí),該服務(wù)器端接受客戶端的連接請(qǐng)求,并且,所述客戶端與服務(wù)器端開始建立連接;否則,服務(wù)器端便繼續(xù)監(jiān)聽客戶端的請(qǐng)求。而當(dāng)客戶端與服務(wù)器端連接不成功時(shí),則返回重試,繼續(xù)進(jìn)行連接。在步驟S104中,如圖4所示,其具體包括步驟:S401、所述服務(wù)器端接收到程序信息后,根據(jù)程序信息生成執(zhí)行程序進(jìn)程;此步驟中,當(dāng)所述服務(wù)器端接收到客戶端發(fā)送過來的程序信息后,即可生成一個(gè)新的進(jìn)程,該進(jìn)程為執(zhí)行程序進(jìn)程,用于對(duì)該程序信息中指定的程序進(jìn)行執(zhí)行和處理。S402、所述服務(wù)器端通過該執(zhí)行程序進(jìn)程對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理;在服務(wù)器端生成執(zhí)行程序進(jìn)程后,即可利用該執(zhí)行程序進(jìn)程對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理。S403、處理完成后,所述服務(wù)器端返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端。在執(zhí)行程序進(jìn)程對(duì)程序處理完畢后,該服務(wù)器端即可將程序執(zhí)行處理結(jié)果返回至客戶端,如此,本發(fā)明實(shí)現(xiàn)了將在java環(huán)境中需要執(zhí)行的程序直接在服務(wù)器端進(jìn)行處理,從而避免了通過虛擬機(jī)的主導(dǎo),在java環(huán)境和宿主機(jī)環(huán)境進(jìn)行遷移的情況,直接在命令行中即可執(zhí)行程序,從而增強(qiáng)了系統(tǒng)的可靠性,并提高了系統(tǒng)的響應(yīng)時(shí)間。本發(fā)明在java環(huán)境中執(zhí)行程序的方法的另一個(gè)具體實(shí)施例,如圖5所示,其包括步驟:S501、在java應(yīng)用環(huán)境中執(zhí)行第一程序;S502、判斷是否需要執(zhí)行第二程序;即判斷是否需要在java應(yīng)用環(huán)境中執(zhí)行第二程序,例如本地程序、C程序等程序時(shí),若是則創(chuàng)建該客戶端,用來加快高效執(zhí)行這些程序,以確保程序執(zhí)行的穩(wěn)定性。S503、當(dāng)是時(shí),在java應(yīng)用環(huán)境中創(chuàng)建客戶端;當(dāng)否時(shí),則繼續(xù)執(zhí)行第一程序,即執(zhí)行步驟S507;S504、所述客戶端連接所述服務(wù)器端;其中,java環(huán)境中的客戶端連接當(dāng)前操作系統(tǒng)中的服務(wù)器端。S505、判斷服務(wù)器端與客戶端的連接是否成功;S506、當(dāng)連接成功時(shí),所述客戶端將需要執(zhí)行的第二程序的程序信息發(fā)送給服務(wù)器端,并進(jìn)入S604的處理步驟;S507、若無需執(zhí)行第二程序,則繼續(xù)執(zhí)行第一程序;而對(duì)于服務(wù)器端,其主要執(zhí)行以下步驟:S601、服務(wù)器端監(jiān)聽客戶端的連接請(qǐng)求;S602、判斷是否有客戶端發(fā)送連接請(qǐng)求,若是,則進(jìn)入步驟S603;若否,則返回步驟S601監(jiān)聽客戶端的連接請(qǐng)求;S603、若是,接收客戶端的連接請(qǐng)求,并建立服務(wù)器端與客戶端的連接;S604、當(dāng)服務(wù)器端接收到所述客戶端的程序信息后,處理需要執(zhí)行的程序;S605、當(dāng)處理完畢后,將處理結(jié)果返回至客戶端;本發(fā)明還提供了一種在java環(huán)境中執(zhí)行程序的系統(tǒng),如圖6所示,其包括:服務(wù)器端創(chuàng)建模塊100,用于創(chuàng)建后臺(tái)守護(hù)進(jìn)程作為服務(wù)器端;客戶端創(chuàng)建模塊200,用于在java應(yīng)用環(huán)境中創(chuàng)建客戶端,并將創(chuàng)建的客戶端連接至所述服務(wù)器端;客戶端300,用于將需要執(zhí)行程序的程序信息發(fā)送至服務(wù)器端400;服務(wù)器端400,用于根據(jù)所述客戶端300發(fā)來的程序信息,執(zhí)行相應(yīng)的程序,并返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端300。關(guān)于上述各模塊的功能原理前面在圖1所述的方法中已有詳述,故不再贅述。進(jìn)一步,如圖7所示,所述客戶端創(chuàng)建模塊200包括:客戶端創(chuàng)建單元210,用于在java環(huán)境中創(chuàng)建客戶端300;連接請(qǐng)求發(fā)送單元220,用于向所述服務(wù)器端400發(fā)送連接請(qǐng)求;連接單元230,用于當(dāng)所述服務(wù)器端400接收所述連接請(qǐng)求后,與所述客戶端300建立連接。前面在如圖3所述的方法中已描述客戶端創(chuàng)建模塊200中各單元的功能作用,故不再贅述。進(jìn)一步,如圖8所示,所述服務(wù)器端400包括:執(zhí)行程序進(jìn)程生成單元410,用于所述服務(wù)器端400接收到程序信息后,根據(jù)程序信息生成執(zhí)行程序進(jìn)程;程序處理單元420,用于通過該執(zhí)行程序進(jìn)程對(duì)需要執(zhí)行的程序進(jìn)行執(zhí)行處理;處理結(jié)果返回單元430,用于處理完成后,返回相應(yīng)的程序執(zhí)行結(jié)果至客戶端300。前面在如圖4所述的方法中已描述服務(wù)器端400中各單元的功能作用,故不再贅述。本發(fā)明在java環(huán)境中執(zhí)行程序的方法及系統(tǒng),通過創(chuàng)建服務(wù)器端及客戶端的方式,將java環(huán)境中需要執(zhí)行的程序通過C/S(Client/Server,即客戶機(jī)/服務(wù)器)的架構(gòu)直接在服務(wù)器端進(jìn)行處理,而無需調(diào)用java標(biāo)準(zhǔn)的exec接口來執(zhí)行,從而大大簡化了程序執(zhí)行步驟,不需要通過虛擬機(jī)的主導(dǎo),在java環(huán)境和宿主環(huán)境中進(jìn)行遷移,需要執(zhí)行的程序可直接在命令行中執(zhí)行,從而降低了程序執(zhí)行的復(fù)雜性,增強(qiáng)了系統(tǒng)的可靠性,并提供了系統(tǒng)的響應(yīng)時(shí)間,本發(fā)明解決了在java環(huán)境中執(zhí)行程序不穩(wěn)定的問題,將本發(fā)明應(yīng)用在智能電視領(lǐng)域,提高了智能電視程序的開發(fā)質(zhì)量和整個(gè)系統(tǒng)的穩(wěn)定性。應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。