相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)要求在35U.S.C.§119(e)下于2009年5月29日在Bernard A.Traversat、Jonathan I.Schwartz、James A.Gosling、Joshua M.Marinacci、Michael J.Duigou、Henry Jen、Mohamed M.Abdelaziz、Brian Goetz、Anant K.Mithal、Dusan Palvica、Jean Yao、Gemma Watson、Eric N.Klein、Jr.,Octavian Tanase、John E.Muhlner、Aurelio Garcia-Ribeyro、及Thomas V.Ng的名下提交的標(biāo)題為“Java商店”的美國(guó)臨時(shí)專利申請(qǐng)No.61/182,303的優(yōu)先權(quán),該臨時(shí)專利申請(qǐng)的全部?jī)?nèi)容在此通過引用而并入。
技術(shù)領(lǐng)域
本申請(qǐng)涉及JAVA商店。具體而言,涉及用于發(fā)布應(yīng)用程序的方法和系統(tǒng)。
背景技術(shù):
軟件開發(fā)人員在全國(guó)、甚至在全世界正在不斷地創(chuàng)建新的應(yīng)用程序。軟件開發(fā)可以使用各種平臺(tái)來完成,這些平臺(tái)包括但不限于JavaTM和JavaFXTM(和是由Sun Microsystems,Inc.,Mountain View,CA.擁有的注冊(cè)商標(biāo))。當(dāng)開發(fā)新的應(yīng)用程序時(shí),開發(fā)人員必須尋找一種途徑,使得所述應(yīng)用程序可用于對(duì)它感興趣的那些用戶。這可以例如通過征求可能對(duì)這樣一種應(yīng)用程序感興趣的用戶來完成。開發(fā)人員例如可以經(jīng)由可拆卸存儲(chǔ)設(shè)備,如CD-ROM,來分發(fā)應(yīng)用程序的拷貝。
技術(shù)實(shí)現(xiàn)要素:
一般地,在一個(gè)方面,本發(fā)明涉及一種計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)包括使計(jì)算機(jī)系統(tǒng)執(zhí)行一種方法的計(jì)算機(jī)可讀代碼。所述方法包括:接收應(yīng)用程序;接收應(yīng)用程序的應(yīng)用信息;及部分地基于應(yīng)用信息來確定對(duì)應(yīng)用程序的訪問特權(quán)。所述方法還包括:使用應(yīng)用程序和訪問特權(quán)來生成應(yīng)用程序的部署軟件包,并發(fā)布所述應(yīng)用程序。
一般地,在一個(gè)方面,本發(fā)明涉及一種用于發(fā)布應(yīng)用程序的系統(tǒng)。所述系統(tǒng)包括處理器和存儲(chǔ)器,該存儲(chǔ)器包括能夠由處理器執(zhí)行的計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼被配置成接收應(yīng)用程序和應(yīng)用程序的應(yīng)用信息。所述計(jì)算機(jī)可讀代碼還被配置成:部分地基于應(yīng)用信息來確定對(duì)應(yīng)用程序的訪問特權(quán);和使用應(yīng)用程序和訪問特權(quán)來生成應(yīng)用程序的部署軟件包。計(jì)算機(jī)可讀代碼還被配置成發(fā)布所述應(yīng)用程序,以使部署軟件包可用于從包含下列的組中選擇的至少一個(gè):安裝在客戶設(shè)備上和在客戶設(shè)備上預(yù)覽。
本發(fā)明的其它方面根據(jù)如下描述和附屬權(quán)利要求書將是顯然的。
附圖說明
圖1示出按照本發(fā)明一個(gè)實(shí)施例的系統(tǒng)。
圖2示出按照本發(fā)明一個(gè)實(shí)施例的倉(cāng)庫(kù)的體系結(jié)構(gòu)。
圖3-6示出按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的方法。
圖7-20示出根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例的例子。
圖21示出按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施方式
現(xiàn)在將參照附圖詳細(xì)地描述本發(fā)明的具體實(shí)施例。在各個(gè)附圖(也稱作圖)中的類似元素為了一致性由類似附圖標(biāo)記指示。
在本發(fā)明的實(shí)施例中,陳述了多個(gè)具體細(xì)節(jié)以便提供本發(fā)明的更徹底理解。然而,對(duì)于本領(lǐng)域的技術(shù)人員來說,顯然可以實(shí)踐本發(fā)明而不用這些具體細(xì)節(jié)。在其它實(shí)例中,不再詳細(xì)地描述已知特征以避免使本發(fā)明模糊。
一般地,本發(fā)明的實(shí)施例涉及發(fā)布和分發(fā)應(yīng)用程序。更明確地說,本發(fā)明的實(shí)施例涉及應(yīng)用程序(例如,Java或JavaFX應(yīng)用程序)的發(fā)布和檢查,這些應(yīng)用程序能夠在Java運(yùn)行環(huán)境(JRE,Java Runtime Environment)中執(zhí)行,而與JRE在其上執(zhí)行和分發(fā)應(yīng)用程序的計(jì)算平臺(tái)無關(guān)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,這涉及:確定所述應(yīng)用程序是適當(dāng)?shù)膽?yīng)用程序;和確定所述應(yīng)用程序的訪問特權(quán)。
在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用程序一旦被編譯,就處于字節(jié)-代碼格式。編譯后的應(yīng)用程序被配置成在Java虛擬機(jī)(JVM,Java Virtual Machine)上執(zhí)行。更明確地說,JVM包括啟動(dòng)JRE的執(zhí)行和允許應(yīng)用程序在JRE內(nèi)執(zhí)行的功能。應(yīng)用程序的執(zhí)行包括讀取和驗(yàn)證字節(jié)-代碼、確定相應(yīng)的本機(jī)-平臺(tái)機(jī)器代碼、以及將相應(yīng)的本機(jī)-平臺(tái)機(jī)器代碼發(fā)給客戶設(shè)備OS和/或硬件。在本發(fā)明的一個(gè)實(shí)施例中,JVM可以實(shí)施一個(gè)或多個(gè)“沙箱”,其中,每個(gè)沙箱是JRE內(nèi)的隔離執(zhí)行環(huán)境。在沙箱內(nèi)執(zhí)行的應(yīng)用程序可僅與JVM和沙箱內(nèi)的其它應(yīng)用程序進(jìn)行交互;然而,應(yīng)用程序可與在沙箱外執(zhí)行的應(yīng)用程序進(jìn)行交互。而且,JVM可對(duì)應(yīng)用程序可如何在給定沙箱內(nèi)執(zhí)行設(shè)置進(jìn)一步的限制。
圖1示出按照本發(fā)明一個(gè)實(shí)施例的系統(tǒng)。該系統(tǒng)包括一個(gè)或多個(gè)應(yīng)用程序開發(fā)人員(110)、倉(cāng)庫(kù)(120)、以及一個(gè)或多個(gè)客戶設(shè)備(140)。下面討論這些組件的每一個(gè)。
在本發(fā)明的一個(gè)實(shí)施例中,開發(fā)人員(110)生成、創(chuàng)建、或獲得應(yīng)用程序(150)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,所述應(yīng)用程序可以是但不限于Java(任何版本、樣式)和JavaFX應(yīng)用程序。開發(fā)人員然后將這些應(yīng)用程序(150)提供給倉(cāng)庫(kù)(120)以便分發(fā)。另外,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員(110)向倉(cāng)庫(kù)(120)提供應(yīng)用信息(155)(即,與應(yīng)用程序有關(guān)的數(shù)據(jù))。關(guān)于應(yīng)用信息的更多細(xì)節(jié)將在圖8-11中提供。
根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員(110)也從倉(cāng)庫(kù)(120)接收關(guān)于已經(jīng)提交的應(yīng)用程序(即,應(yīng)用程序(150))的數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,這種數(shù)據(jù)可以包括客戶使用數(shù)據(jù)(170)和應(yīng)用度量(175)。據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,客戶使用數(shù)據(jù)(170)可相應(yīng)于詳細(xì)說明給定應(yīng)用程序在一個(gè)或多個(gè)客戶設(shè)備(140)上如何使用的數(shù)據(jù)(例如,沒有任何個(gè)人身份信息)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,客戶使用數(shù)據(jù)(170)可以包括諸如用戶多么頻繁地啟動(dòng)和/或停止應(yīng)用程序(150)、用戶訪問了什么頁(yè)面、用戶按哪種順序在應(yīng)用程序中的各個(gè)頁(yè)面中導(dǎo)航、頁(yè)面被如何訪問、用戶如何與用戶接口進(jìn)行交互(例如,用戶點(diǎn)擊了哪些按鈕、等等)、以及訪問頁(yè)面花費(fèi)的時(shí)間之類的信息。另外,開發(fā)人員(110)可以接收應(yīng)用度量(175)。
根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用度量(175)可以包括應(yīng)用程序已被安裝或再安裝的次數(shù)、應(yīng)用程序已被觀看的次數(shù)、應(yīng)用程序已被用戶除去的次數(shù)、以及應(yīng)用程序已導(dǎo)致災(zāi)難性錯(cuò)誤(即,應(yīng)用程序“崩潰”)的次數(shù)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用度量(175)由倉(cāng)庫(kù)(120)生成,如下面描述的那樣。
在本發(fā)明的一個(gè)實(shí)施例中,倉(cāng)庫(kù)相應(yīng)于一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)(例如,服務(wù)器),這些計(jì)算機(jī)系統(tǒng)被配置成與開發(fā)人員和客戶設(shè)備對(duì)接。一般地,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,倉(cāng)庫(kù)(120)從開發(fā)人員(110)接收應(yīng)用程序,并且通過將它們提供給客戶設(shè)備(140)來將它們提供給用戶。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,將應(yīng)用程序(150)提供給倉(cāng)庫(kù)(120),該應(yīng)用程序(150)打包在標(biāo)準(zhǔn)Java存檔(JAR,Java Archive)文件中。倉(cāng)庫(kù)被配置成存儲(chǔ)一個(gè)或多個(gè)應(yīng)用程序。而且,倉(cāng)庫(kù)可以存儲(chǔ)同一個(gè)應(yīng)用程序的不同版本(例如,版本1、版本1.1、版本2、等等),其中,每個(gè)版本包括不同特征和/或內(nèi)容。例如,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用程序的不同版本可被存儲(chǔ)用于各種屏幕尺寸和輸入能力(例如,觸摸屏、物理鍵盤輸入、跟蹤球輸入、等等)。另外,倉(cāng)庫(kù)可以存儲(chǔ)應(yīng)用程序的給定版本的多個(gè)實(shí)例,其中,應(yīng)用程序的每個(gè)實(shí)例被配置成部署在不同類型的客戶設(shè)備上(例如,一個(gè)實(shí)例用于桌面部署、一個(gè)實(shí)例用于部署在移動(dòng)設(shè)備上、等等)。而且,在本發(fā)明的一個(gè)實(shí)施例中,倉(cāng)庫(kù)包括支持在圖3-6的一個(gè)或多個(gè)中描述的實(shí)施例的功能。倉(cāng)庫(kù)的實(shí)施例在圖2中描述。
根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,倉(cāng)庫(kù)(120)被配置成使用客戶使用數(shù)據(jù)來生成關(guān)于應(yīng)用程序(150)如何被使用的趨勢(shì),并且隨后將生成的趨勢(shì)發(fā)送給開發(fā)人員。可選擇地或者除了上述之外,倉(cāng)庫(kù)(120)可被配置成將客戶使用數(shù)據(jù)發(fā)送給開發(fā)人員。在本發(fā)明的一個(gè)實(shí)施例中,客戶使用數(shù)據(jù)是從執(zhí)行所述應(yīng)用程序的多個(gè)個(gè)別客戶設(shè)備獲得的客戶使用數(shù)據(jù)的集合。在本發(fā)明的一個(gè)實(shí)施例中,所述應(yīng)用度量除了客戶使用數(shù)據(jù)之外,還包括由倉(cāng)庫(kù)跟蹤的其它信息。例如,所述應(yīng)用度量可以指示給定應(yīng)用程序被預(yù)覽的次數(shù)(下面在圖5中描述)、給定應(yīng)用程序被安裝在客戶設(shè)備上的次數(shù)、當(dāng)前在其上存儲(chǔ)了所述應(yīng)用程序的客戶設(shè)備的類型、等等。
倉(cāng)庫(kù)被配置成在有線網(wǎng)絡(luò)上、無線網(wǎng)絡(luò)上、或其任何組合上與開發(fā)人員(110)和客戶設(shè)備(140)通信。而且,倉(cāng)庫(kù)(120)和客戶設(shè)備(140)可在有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、或其任何組合上通信。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,在收到應(yīng)用程序(150)和應(yīng)用信息(155)后,倉(cāng)庫(kù)(120)可將應(yīng)用程序打包在用戶可得到的部署軟件包(160)中。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員(110)和客戶設(shè)備(140)上的用戶可以使用界面與倉(cāng)庫(kù)(120)進(jìn)行交互。
在本發(fā)明的一個(gè)實(shí)施例中,客戶設(shè)備(140)被配置成從倉(cāng)庫(kù)(120)接收作為部署軟件包(160)的應(yīng)用程序。在本發(fā)明的一個(gè)實(shí)施例中,部署軟件包與Java網(wǎng)絡(luò)啟動(dòng)協(xié)議(JNLP,Java Network Launch Protocol)相符,使得可以使用JNLP的Web Start特征來執(zhí)行所述應(yīng)用程序。在本發(fā)明的一個(gè)實(shí)施例中,客戶設(shè)備也支持JavaFX,JavaFX被用來獲得與應(yīng)用程序在客戶設(shè)備上的JRE中的執(zhí)行相關(guān)聯(lián)的客戶使用數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,客戶設(shè)備(140)是可在其上執(zhí)行JRE的任何設(shè)備。換句話說,每個(gè)客戶設(shè)備(140)包括Java運(yùn)行環(huán)境(130)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,用戶使用客戶設(shè)備(140)來訪問來自倉(cāng)庫(kù)(120)的應(yīng)用程序。客戶設(shè)備的例子包括但不限于連接到有線網(wǎng)絡(luò)的計(jì)算機(jī)、連接到無線網(wǎng)絡(luò)的計(jì)算機(jī)、2G移動(dòng)設(shè)備、3G移動(dòng)設(shè)備、個(gè)人數(shù)字助理、智能電話(即,提供高級(jí)能力的移動(dòng)電話,常常具有PC狀功能,例如,iPhone、Blackberry、執(zhí)行Android移動(dòng)設(shè)備平臺(tái)的移動(dòng)電話)、機(jī)頂盒(即,連接到電視(或其它顯示設(shè)備)和外部信號(hào)源的設(shè)備,將信號(hào)轉(zhuǎn)換成然后在電視屏幕(或顯示設(shè)備的屏幕)上顯示的內(nèi)容)、等等。
圖2示出按照本發(fā)明一個(gè)實(shí)施例的倉(cāng)庫(kù)(即,圖1的倉(cāng)庫(kù)(120))的體系結(jié)構(gòu)。所述倉(cāng)庫(kù)包括操作系統(tǒng)(OS)(240),例如,SolarisTM、LinuxTM、UnixTM、WindowsTM、或任何其它操作系統(tǒng)(是由Sun Microsystems,Inc.,Mountain View,CA.擁有的注冊(cè)商標(biāo);是由Linus Tourvalds,Santa Clara,CA.擁有的注冊(cè)商標(biāo);是由The Open Group擁有的注冊(cè)商標(biāo);及是由Microsoft Corporation,Redmond,WA擁有的注冊(cè)商標(biāo))。OS執(zhí)行應(yīng)用程序服務(wù)器(230)(例如,Glassfish),該應(yīng)用程序服務(wù)器(230)被配置成宿主對(duì)倉(cāng)庫(kù)所提供的服務(wù)的應(yīng)用程序接口(API)。
在本發(fā)明的一個(gè)實(shí)施例中,倉(cāng)庫(kù)包括管理服務(wù)(205)、開發(fā)人員服務(wù)(210)、應(yīng)用程序檢查員服務(wù)(215)、內(nèi)容傳送服務(wù)(220)、及數(shù)字權(quán)利管理服務(wù)(225)。下面描述這些服務(wù)的每一個(gè)。
在本發(fā)明的一個(gè)實(shí)施例中,管理服務(wù)(205)提供倉(cāng)庫(kù)管理服務(wù)(經(jīng)由通用資源定位器(URL)訪問),這些倉(cāng)庫(kù)管理服務(wù)包括倉(cāng)庫(kù)硬件和軟件的配置。例如,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,管理服務(wù)被配置成跟蹤正在將內(nèi)容提交給倉(cāng)庫(kù)(即,圖1的倉(cāng)庫(kù)120)的開發(fā)人員。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,管理服務(wù)(205)被配置成跟蹤應(yīng)用程序的購(gòu)買事務(wù)和/或應(yīng)用程序的部署。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,管理服務(wù)(205)被配置成管理應(yīng)用程序在目錄中對(duì)消費(fèi)者的顯示。最后,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,管理服務(wù)(205)管理對(duì)倉(cāng)庫(kù)提交的內(nèi)容的狀態(tài)(例如,已提交、已批準(zhǔn)、在檢查中、已發(fā)布、或已隔離)。
在本發(fā)明的一個(gè)實(shí)施例中,開發(fā)人員服務(wù)(210)向開發(fā)人員提供入口(經(jīng)由URL訪問),以將應(yīng)用程序和相應(yīng)的應(yīng)用信息發(fā)送/裝載到倉(cāng)庫(kù)。另外,開發(fā)人員可向開發(fā)人員服務(wù)注冊(cè),以接收針對(duì)開發(fā)人員(或提交了應(yīng)用程序的其它第三方)所提交的應(yīng)用程序的應(yīng)用度量和客戶使用數(shù)據(jù)(以上描述)。這樣一種入口的例子示出在圖8-11中。
在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用程序檢查員服務(wù)(215)向應(yīng)用程序檢查員提供入口(經(jīng)由URL訪問),以檢查和批準(zhǔn)由開發(fā)人員(經(jīng)由開發(fā)人員服務(wù))提交的應(yīng)用程序以便向用戶發(fā)布。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,可以從入口直接執(zhí)行應(yīng)用程序(即,不用安裝或購(gòu)買應(yīng)用程序)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用程序檢查員服務(wù)(215)也可以使檢查員能夠設(shè)置對(duì)應(yīng)用程序的訪問特權(quán)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,檢查服務(wù)提供驗(yàn)證如下的能力:應(yīng)用程序的內(nèi)容是適當(dāng)?shù)?例如,如果應(yīng)用程序是針對(duì)小學(xué)生的,那么檢查應(yīng)用程序的內(nèi)容以保證它是年齡適當(dāng)?shù)?;應(yīng)用程序的內(nèi)容與描述相匹配;以及當(dāng)應(yīng)用程序運(yùn)行時(shí)沒有病毒或惡意行為(例如,應(yīng)用程序進(jìn)行用戶個(gè)人文件的未授權(quán)訪問)。而且,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,檢查服務(wù)提供驗(yàn)證如下的能力:應(yīng)用程序具有訪問用戶文件夾或網(wǎng)絡(luò)的合適許可集;以及應(yīng)用程序與應(yīng)用程序?qū)⒉渴鹪谄渖系母鞣N操作系統(tǒng)(例如,Windows Mobile、Android、Linux、等等)兼容。
在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)容傳送服務(wù)(220)向用戶提供入口(經(jīng)由URL訪問),以便:(i)觀看倉(cāng)庫(kù)中的應(yīng)用程序(245);(ii)打包用于傳送到客戶設(shè)備的應(yīng)用程序,以便使用JNLP安裝或預(yù)覽;(iii)管理應(yīng)用程序版本和實(shí)例;(iv)管理記賬和發(fā)票(如果需要);(v)響應(yīng)確認(rèn)給定客戶設(shè)備包括給定應(yīng)用程序的最新版本的請(qǐng)求;(vi)跟蹤哪些應(yīng)用被每個(gè)用戶安裝在他們的客戶設(shè)備上(例如,用戶A將應(yīng)用程序1加載在他們的移動(dòng)設(shè)備上);及(vii)維護(hù)用戶賬戶信息(例如,用戶名、口令、等等)。內(nèi)容傳送服務(wù)入口的例子示出在圖15-20中。
在本發(fā)明的一個(gè)實(shí)施例中,數(shù)字權(quán)利管理服務(wù)(225)包括為給定應(yīng)用程序、特定用戶、特定客戶設(shè)備類型、或其任何組合設(shè)置數(shù)字權(quán)利管理(DRM)設(shè)定的功能。例如,DRM設(shè)定可以規(guī)定,但不限于規(guī)定:(i)在何處應(yīng)用程序可以執(zhí)行(例如,在什么系統(tǒng)上應(yīng)用程序可以執(zhí)行);(ii)應(yīng)用程序的給定實(shí)例是否可被拷貝到多個(gè)客戶設(shè)備;(iii)用戶可以訪問應(yīng)用程序的什么特征;及(iv)可獲得應(yīng)用程序(或應(yīng)用程序的給定特征)的持續(xù)時(shí)間。而且,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,DRM設(shè)定可以提供跟蹤消費(fèi)者已經(jīng)購(gòu)買的許可證的類型的能力。例如,消費(fèi)者可能購(gòu)買永久許可證、預(yù)訂許可證、及按內(nèi)容訪問許可證。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,DRM服務(wù)(225)禁止用戶在沒有購(gòu)買有效許可證的情況下拷貝應(yīng)用程序和在不同系統(tǒng)上使用它。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,DRM管理服務(wù)還驗(yàn)證用戶對(duì)特定應(yīng)用程序可得到的訪問級(jí)別(例如,應(yīng)用程序是包括5級(jí)的游戲,但用戶只有訪問級(jí)1-3的許可證,那么DRM可以實(shí)施這種限制)。
在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用程序(245)、應(yīng)用信息(250)、以及事務(wù)日志(255)的可執(zhí)行代碼被存儲(chǔ)在倉(cāng)庫(kù)中的數(shù)據(jù)倉(cāng)庫(kù)(235)中。在本發(fā)明的一個(gè)實(shí)施例中,數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)由文件系統(tǒng)管理,諸如ZFS、Network File System(NTFS)、Universal Disk Format(UDF)、或任何其它文件系統(tǒng)(或其組合)。另外,作為選擇例,應(yīng)用程序(245)、應(yīng)用信息(250)、以及事務(wù)日志(255)的可執(zhí)行代碼的一個(gè)或多個(gè)可以存儲(chǔ)在內(nèi)容傳送網(wǎng)絡(luò)(即,地理分布式存儲(chǔ)網(wǎng)絡(luò))中,以便利應(yīng)用程序等等到消費(fèi)者的高效傳輸。在這樣的實(shí)施例中,倉(cāng)庫(kù)包括如下功能:訪問內(nèi)容傳送網(wǎng)絡(luò);和管理在內(nèi)容傳送網(wǎng)絡(luò)中存儲(chǔ)的數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,應(yīng)用信息(250)被存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中作為可擴(kuò)展標(biāo)記語(yǔ)言(XML)文件。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,應(yīng)用信息可按除了XML之外(或與其相組合)的格式存儲(chǔ)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用程序開發(fā)人員(110)也向倉(cāng)庫(kù)(120)提供與提交的應(yīng)用程序(150)有關(guān)的應(yīng)用信息(155)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用信息(155)可以包括但不限于應(yīng)用程序名稱、子標(biāo)題、描述、類別、許可證要求(例如,永久的、預(yù)訂的、或免費(fèi)的)、以及價(jià)格。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,子標(biāo)題是伴隨應(yīng)用程序名稱的應(yīng)用程序的簡(jiǎn)短描述。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,描述可以是彈出描述或完整描述。而且,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用信息可以包括彈出描述以及完整描述。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,當(dāng)用戶在顯示器中懸停在與應(yīng)用程序相關(guān)聯(lián)的圖標(biāo)上時(shí),彈出描述將出現(xiàn)。關(guān)于完整描述,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,將使得請(qǐng)求關(guān)于應(yīng)用程序的更多信息的用戶能夠獲得完整描述。關(guān)于類別,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員(110)將從預(yù)存列表中選擇描述應(yīng)用程序的描述性術(shù)語(yǔ)(即,“社交網(wǎng)絡(luò)”、“運(yùn)動(dòng)”、“財(cái)經(jīng)”、等等)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用信息可以包括其它信息,如幫助頁(yè)面通用資源定位器(“URL”)、與應(yīng)用程序(150)相關(guān)聯(lián)的一個(gè)或多個(gè)圖標(biāo)、以及應(yīng)用程序(150)的屏幕截圖。
圖3示出按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的方法。更明確地說,圖3示出用來將應(yīng)用程序提供給倉(cāng)庫(kù)的方法。盡管順序地呈現(xiàn)和描述了流程圖中的各個(gè)步驟,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,步驟的一些或全部可以按不同順序執(zhí)行、可被組合或省略,以及步驟的一些或全部可以并行地執(zhí)行。
在步驟100中,用于應(yīng)用程序的一個(gè)或多個(gè)Java歸檔文件(Java Archives,JAR)由開發(fā)人員(或?qū)?yīng)用程序提供給倉(cāng)庫(kù)的第三方)獲得(產(chǎn)生、創(chuàng)建、等等)。在步驟102中,獲得應(yīng)用程序的應(yīng)用信息。在本發(fā)明的一個(gè)實(shí)施例中,可使用現(xiàn)有技術(shù)中的任何已知機(jī)制來獲得(產(chǎn)生、或創(chuàng)建)應(yīng)用信息,這些已知機(jī)制包括完成基于web的表格、提供文本文檔、提供XML文檔、等等。在步驟104中,將JAR(一個(gè)或多個(gè))和相應(yīng)的應(yīng)用信息提供給倉(cāng)庫(kù)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用程序和應(yīng)用信息通過跨越網(wǎng)絡(luò)發(fā)送它們而被提供給倉(cāng)庫(kù)。在本發(fā)明的一個(gè)實(shí)施例中,可使用開發(fā)人員服務(wù)來進(jìn)行圖3中的一個(gè)或多個(gè)步驟。
圖4示出按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的方法。更明確地說,圖4示出用來檢查在圖3中(或通過另一種機(jī)制)提供給倉(cāng)庫(kù)的應(yīng)用程序的方法。盡管順序地呈現(xiàn)和描述了流程圖中的各個(gè)步驟,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,步驟的一些或全部可以按不同順序執(zhí)行、可被組合或省略,以及步驟的一些或全部可以并行地執(zhí)行。
在步驟200中,接收J(rèn)AR和相應(yīng)的應(yīng)用信息。在步驟202中,檢查應(yīng)用程序的內(nèi)容(例如,文本、圖形和/或聲頻內(nèi)容)。在本發(fā)明的一個(gè)實(shí)施例中,可由檢查員經(jīng)由應(yīng)用程序檢查員服務(wù)來檢查應(yīng)用程序的內(nèi)容。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,手動(dòng)檢查內(nèi)容提交的文本,并且自動(dòng)地檢查JAR,以檢查病毒以及驗(yàn)證代碼。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,可以手動(dòng)地或自動(dòng)地(例如使用模擬器)來驗(yàn)證JAR和相應(yīng)的應(yīng)用信息。
在步驟204中,確定對(duì)應(yīng)用程序的訪問特權(quán)。訪問特權(quán)可以部分地根據(jù)應(yīng)用信息來確定。而且,可部分地使用由應(yīng)用程序檢查員服務(wù)規(guī)定(或應(yīng)用程序檢查員服務(wù)可訪問)的規(guī)則,來確定訪問特權(quán)。在本發(fā)明的一個(gè)實(shí)施例中,訪問特權(quán)可以規(guī)定任何粒度級(jí)。例如,訪問特權(quán)可以是:(i)僅沙箱執(zhí)行(即,應(yīng)用程序僅在沙箱內(nèi)執(zhí)行);(ii)在沙箱外在客戶設(shè)備上的限制訪問執(zhí)行(即,應(yīng)用程序可以訪問沙箱外的資源/數(shù)據(jù)/外圍設(shè)備的規(guī)定子集);以及(iii)在客戶設(shè)備上的完全訪問執(zhí)行。
在步驟206中,設(shè)置用于應(yīng)用程序的DRM設(shè)定。DRM設(shè)定可以規(guī)定對(duì)于應(yīng)用程序的任何類型的DRM限制。例如,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,對(duì)于應(yīng)用程序可以施加DRM限制,這些DRM限制允許用戶在購(gòu)買應(yīng)用程序之前僅僅訪問應(yīng)用程序的預(yù)覽。另一個(gè)例子是,對(duì)于應(yīng)用程序可以施加DRM限制,這些DRM限制限定應(yīng)用程序可被訪問的次數(shù),或者設(shè)置應(yīng)用程序多長(zhǎng)時(shí)間是可訪問的時(shí)間限制。在本發(fā)明的一個(gè)實(shí)施例中,步驟206可由DRM服務(wù)執(zhí)行。
在步驟208中,使用JNLP打包JAR(一個(gè)或多個(gè))、訪問特權(quán)以及DRM設(shè)定以便部署。在本發(fā)明的一個(gè)實(shí)施例中,倉(cāng)庫(kù)包括執(zhí)行步驟208中要求的全部必要?jiǎng)幼鞯墓δ?。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,打包可以包括創(chuàng)建部署軟件包的多個(gè)實(shí)例,其中,對(duì)于具體類型的客戶設(shè)備創(chuàng)建部署軟件包的每個(gè)實(shí)例(例如,用于桌面部署的一個(gè)實(shí)例、用于第一類型移動(dòng)設(shè)備上的部署的一個(gè)實(shí)例、用于第二類型的移動(dòng)設(shè)備上的部署的一個(gè)實(shí)例、等等)。在步驟210中,在倉(cāng)庫(kù)中發(fā)布應(yīng)用程序(即,應(yīng)用程序可由客戶設(shè)備安裝或預(yù)覽)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,發(fā)布的應(yīng)用程序可通過倉(cāng)庫(kù)的內(nèi)容傳送服務(wù)訪問。在本發(fā)明的一個(gè)實(shí)施例中,步驟208-210可由內(nèi)容傳送服務(wù)執(zhí)行。
圖5示出按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的方法。更明確地說,圖5示出用來在客戶設(shè)備上預(yù)覽或安裝應(yīng)用程序的方法。盡管順序地呈現(xiàn)和描述了流程圖中的各個(gè)步驟,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,步驟的一些或全部可以按不同順序執(zhí)行、可被組合或省略,以及步驟的一些或全部可以并行地執(zhí)行。
在步驟300中,用戶例如使用內(nèi)容傳送服務(wù)登入倉(cāng)庫(kù)。在本發(fā)明的一個(gè)實(shí)施例中,用戶可經(jīng)由web瀏覽器(例如,F(xiàn)irefoxTM、Google ChromeTM、Internet ExplorerTM、或任何微型瀏覽器、小型瀏覽器、或無線因特網(wǎng)瀏覽器)和/或經(jīng)由客戶設(shè)備上安裝的另一個(gè)應(yīng)用程序來訪問倉(cāng)庫(kù)(FirefoxTM是由Mozilla,Inc.,Mountain View,CA.擁有的注冊(cè)商標(biāo);Google ChromeTM是由Google,Inc.,Mountain View,CA.擁有的注冊(cè)商標(biāo);及Internet ExplorerTM是由Microsoft Corporation,Redmond,WA擁有的注冊(cè)商標(biāo))。
在步驟302中,由用戶經(jīng)由客戶設(shè)備來選擇應(yīng)用程序。在步驟304中,進(jìn)行關(guān)于用戶是想安裝應(yīng)用程序還是預(yù)覽應(yīng)用程序的確定。如果要安裝應(yīng)用程序,那么方法轉(zhuǎn)到步驟306。如果要預(yù)覽應(yīng)用程序,那么方法轉(zhuǎn)到步驟318。在步驟306中,將由內(nèi)容傳送服務(wù)(經(jīng)網(wǎng)頁(yè)瀏覽器或在客戶設(shè)備上的其它應(yīng)用程序)提供的用戶界面中的代表應(yīng)用程序的圖標(biāo)拖到客戶設(shè)備的桌面(或主屏幕)上(或者否則選擇)。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,可使用其它公知方法/機(jī)制將部署軟件包傳輸?shù)娇蛻粼O(shè)備。
在步驟308中,相應(yīng)于應(yīng)用程序的圖標(biāo)到客戶設(shè)備桌面的“拖動(dòng)”(或選擇應(yīng)用程序)啟動(dòng)使用JNLP將部署軟件包(它可以是客戶設(shè)備類型專用的)傳輸?shù)娇蛻粼O(shè)備。在步驟310中,將部署軟件包存儲(chǔ)在客戶設(shè)備上的持久存儲(chǔ)器中。在步驟312中,在客戶機(jī)上的JRE中按照在圖4中規(guī)定的訪問特權(quán)和DRM設(shè)定來執(zhí)行應(yīng)用程序。
在步驟314中,從客戶設(shè)備(使用例如JavaFX)獲得客戶使用數(shù)據(jù),該客戶使用數(shù)據(jù)與應(yīng)用程序在客戶設(shè)備上的使用有關(guān)。客戶使用數(shù)據(jù)可以包括個(gè)人身份信息(即,識(shí)別客戶設(shè)備的用戶的信息、或客戶設(shè)備的用戶的任何其它個(gè)人/機(jī)密信息)。在將數(shù)據(jù)發(fā)送到倉(cāng)庫(kù)之前,可以從客戶使用數(shù)據(jù)中除去個(gè)人身份信息(或其部分)。可選擇地,將帶有個(gè)人身份信息的客戶使用數(shù)據(jù)發(fā)送到倉(cāng)庫(kù),在這時(shí),在將客戶使用數(shù)據(jù)發(fā)送到開發(fā)人員(或?qū)?yīng)用程序提供給倉(cāng)庫(kù)的其它第三方)之前,由倉(cāng)庫(kù)除去個(gè)人身份信息。在步驟316中,將客戶使用數(shù)據(jù)發(fā)送到倉(cāng)庫(kù)。
在步驟318中,如果要預(yù)覽應(yīng)用程序,則使用JNLP將部署軟件包(它可以是客戶設(shè)備類型專用的)傳輸?shù)娇蛻粼O(shè)備。在步驟320中,將部署軟件包存儲(chǔ)到客戶設(shè)備上的臨時(shí)存儲(chǔ)器中(或按臨時(shí)方式存儲(chǔ))。例如,將部署軟件包存儲(chǔ)到易失性存儲(chǔ)器中,并且僅在關(guān)閉JRE以前和/或如在DRM設(shè)定中規(guī)定的那樣在客戶設(shè)備上可用。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,對(duì)于被預(yù)覽的應(yīng)用程序的DRM設(shè)定可能比關(guān)于安裝的應(yīng)用程序的DRM設(shè)定限制性更強(qiáng)。方法然后轉(zhuǎn)到步驟312。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)預(yù)覽應(yīng)用程序時(shí),可以發(fā)送完整的應(yīng)用程序供預(yù)覽,或者可選擇地,可以將比完整的應(yīng)用程序功能少的版本(即,“預(yù)覽版本”)發(fā)送給客戶設(shè)備。而且,一旦完成預(yù)覽,例如,用戶已經(jīng)將應(yīng)用程序使用了規(guī)定時(shí)段,就關(guān)斷設(shè)備,執(zhí)行JVM,然后可使應(yīng)用程序?qū)τ谠O(shè)備的用戶不可訪問。
圖6示出了按照本發(fā)明一個(gè)或多個(gè)實(shí)施例的方法。更明確地說,圖6示出了用來執(zhí)行先前安裝在客戶設(shè)備上的應(yīng)用程序的方法。盡管順序地呈現(xiàn)和描述了流程圖中的各個(gè)步驟,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,步驟的一些或全部可以按不同順序執(zhí)行、可被組合或省略,以及步驟的一些或全部可以并行地執(zhí)行。
在步驟400中,使用啟動(dòng)應(yīng)用程序的任何已知方法(例如,雙擊與應(yīng)用程序相對(duì)應(yīng)的圖標(biāo)、輸入命令行指令、等等),在客戶設(shè)備上啟動(dòng)應(yīng)用程序的執(zhí)行。在步驟402中,確定(或者獲得)客戶設(shè)備上的應(yīng)用程序的當(dāng)前版本。在步驟404中,然后進(jìn)行關(guān)于客戶設(shè)備上的應(yīng)用程序的版本是否是最新版本的確定,其中,最新版本可在倉(cāng)庫(kù)中得到。如果客戶設(shè)備上的應(yīng)用程序是最新版本,那么方法轉(zhuǎn)到步驟410;否則,方法轉(zhuǎn)到步驟406。在本發(fā)明的一個(gè)實(shí)施例中,使用校驗(yàn)和函數(shù)(例如,SHA1、MD5、等等)對(duì)應(yīng)用程序的每個(gè)版本計(jì)算校驗(yàn)和。在這樣的實(shí)施例中,通過比較客戶設(shè)備上的應(yīng)用程序的版本的校驗(yàn)和與應(yīng)用程序的最新版本的校驗(yàn)和,來進(jìn)行步驟404中的確定。
在步驟406中,使用JNLP將包括應(yīng)用程序的最新版本的部署軟件包(它可以是客戶設(shè)備類型專用的)傳輸?shù)娇蛻粼O(shè)備。
在步驟408中,將部署軟件包存儲(chǔ)到客戶設(shè)備上的持久存儲(chǔ)器中。在步驟410中,按照在圖4中規(guī)定的訪問特權(quán)和DRM設(shè)定,在客戶機(jī)上的JRE中執(zhí)行所述應(yīng)用程序。
在步驟412中,從客戶設(shè)備(使用例如JavaFX)獲得客戶使用數(shù)據(jù),該客戶使用數(shù)據(jù)與應(yīng)用程序在客戶設(shè)備上的使用有關(guān)??蛻羰褂脭?shù)據(jù)可以包括個(gè)人身份信息(即,識(shí)別客戶設(shè)備的用戶的信息、或客戶設(shè)備的用戶的任何其它個(gè)人/機(jī)密信息)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,客戶使用數(shù)據(jù)可以本地高速緩存在客戶設(shè)備上,并且僅定期地傳輸。在將數(shù)據(jù)發(fā)送到倉(cāng)庫(kù)之前,可以從客戶使用數(shù)據(jù)中除去個(gè)人身份信息(或其部分)??蛇x擇地,將帶有個(gè)人身份信息的客戶使用數(shù)據(jù)發(fā)送到倉(cāng)庫(kù),在這時(shí),在將客戶使用數(shù)據(jù)發(fā)送到開發(fā)人員(或?qū)?yīng)用程序提供給倉(cāng)庫(kù)的其它第三方)之前,由倉(cāng)庫(kù)除去個(gè)人身份信息。在步驟414中,將客戶使用數(shù)據(jù)發(fā)送到倉(cāng)庫(kù)。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,在圖3-6中示出的上述方法的兩個(gè)或更多個(gè)可以并行地執(zhí)行。
在本發(fā)明的一個(gè)實(shí)施例中,用戶可以使用不同的客戶設(shè)備來訪問倉(cāng)庫(kù)。在這樣的情況下,用戶可在倉(cāng)庫(kù)處具有跨越他們的全部客戶設(shè)備的共用用戶賬戶,并這樣具有在他們的每一個(gè)客戶設(shè)備上安裝同一個(gè)應(yīng)用程序的權(quán)力。例如,如果用戶A購(gòu)買了應(yīng)用程序1并將應(yīng)用程序1安裝在他們的移動(dòng)電話上,并且隨后從他們的膝上型電腦訪問倉(cāng)庫(kù),則用戶A可將應(yīng)用程序1安裝在他們的膝上型電腦上,而不用購(gòu)買應(yīng)用程序1的另外拷貝。
如下討論示出了本發(fā)明的各種實(shí)施的例子。這些例子不打算限制本發(fā)明的范圍。
圖7-14示出了根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例的示范截屏。明確地說,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,圖7-14示出由倉(cāng)庫(kù)提供給開發(fā)人員的示范截屏,這些示范截屏方便將應(yīng)用程序和應(yīng)用信息從開發(fā)人員發(fā)送到倉(cāng)庫(kù)。
圖7示出了開發(fā)人員在將應(yīng)用程序提交給倉(cāng)庫(kù)時(shí)可能最初遇到的的一種實(shí)施。更明確地說,圖7示出了開發(fā)人員在通過開發(fā)人員入口將應(yīng)用程序發(fā)送到倉(cāng)庫(kù)時(shí)最初可能遇到的顯示的截屏。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員可能需要注冊(cè)以便訪問入口。在圖7中示出的界面允許開發(fā)人員通過選擇注冊(cè)圖標(biāo)(705)進(jìn)行注冊(cè),或者通過選擇登錄圖標(biāo)(710)登錄到開發(fā)人員入口。
圖8示出根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例,開發(fā)人員在提交新應(yīng)用程序時(shí)遇到的顯示的截屏。明確地說,該截屏示出了提示開發(fā)人員輸入應(yīng)用信息的頁(yè)面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員已向倉(cāng)庫(kù)注冊(cè),并且已經(jīng)將登錄信息提供給倉(cāng)庫(kù),從而倉(cāng)庫(kù)可以識(shí)別和鑒定開發(fā)人員。在這個(gè)例子中,開發(fā)人員可以提供應(yīng)用信息,該應(yīng)用信息包括應(yīng)用程序名稱(805)、簡(jiǎn)短描述(810)、以及完整描述(815),如上所述。另外,開發(fā)人員可以提供類別(820)(即,應(yīng)用程序所屬類別的列表)、幫助頁(yè)面URL(825)(即,到網(wǎng)頁(yè)的地址,在該網(wǎng)頁(yè)處,用戶可以找到應(yīng)用程序的支持信息)、以及應(yīng)用程序價(jià)格(830)(即,購(gòu)買應(yīng)用程序的成本)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員可以選擇免費(fèi)提供應(yīng)用程序,或者可以選擇提供應(yīng)用程序的價(jià)格。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員也可以選擇自動(dòng)發(fā)布選項(xiàng)(835),該自動(dòng)發(fā)布選項(xiàng)(835)當(dāng)被選中時(shí),允許應(yīng)用程序在批準(zhǔn)后發(fā)布,而不需要通過開發(fā)人員同意。盡管在圖8中沒有示出,但可以提示開發(fā)人員輸入提交應(yīng)用程序的國(guó)家。國(guó)家信息以及應(yīng)用程序的描述可被用來確定關(guān)于應(yīng)用程序是否存在需要解決的任何進(jìn)口/出口控制問題。另外,開發(fā)人員也可以經(jīng)由圖8中示出的GUI來規(guī)定應(yīng)用程序的演示版本的位置,其中,演示版本包括有限的功能。應(yīng)用程序的演示版本可被發(fā)布,并且隨后被用作針對(duì)潛在消費(fèi)者的銷售工具,以確定他們是否想最終購(gòu)買應(yīng)用程序的完整版本。
圖9示出根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例的界面的另一個(gè)例子,開發(fā)人員可以使用該界面來提交新應(yīng)用程序。在這個(gè)例子中,界面提示開發(fā)人員輸入應(yīng)用信息,該應(yīng)用信息包括應(yīng)用程序名稱(905)、應(yīng)用程序的簡(jiǎn)短描述(910)、應(yīng)用程序的完整描述(915)、以及描述應(yīng)用程序的一個(gè)或多個(gè)類別(920)。而且,在這個(gè)例子中,界面向開發(fā)人員提供如下能力:上載包括應(yīng)用程序的JAR文件(925)、以及包括應(yīng)用程序的預(yù)覽的文件(930)。在這個(gè)例子中,開發(fā)人員也能夠提交URL(935),在該URL(935)處,用戶可以找到與應(yīng)用程序相對(duì)應(yīng)的幫助頁(yè)面。這個(gè)例子表明:根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,可能要求開發(fā)人員將數(shù)據(jù)輸入到一定字段中,以便提交應(yīng)用程序用于批準(zhǔn)(即,應(yīng)用程序名稱(905)、簡(jiǎn)短描述(910)、完整描述(915)、類別(920)、從(925)上載JAR、以及幫助頁(yè)面URL(935)),而其它字段是可選的(即,從(930)上載預(yù)覽)。一旦輸入了以上信息,可使用提交報(bào)批按鈕(955)來提交應(yīng)用程序以便批準(zhǔn)。此外,這張圖表明:根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員可使用被標(biāo)記為“打開商店視圖”的按鈕(940)來觀看入口,用戶將在該入口處訪問應(yīng)用程序。另外,開發(fā)人員可使用現(xiàn)在運(yùn)行(955)按鈕來確認(rèn)應(yīng)用程序的JAR(例如在從(925)上載JAR中規(guī)定的)適當(dāng)?shù)貓?zhí)行。
根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇這個(gè)圖標(biāo)向開發(fā)人員呈現(xiàn)一種顯示,這種顯示示出當(dāng)應(yīng)用程序被發(fā)布時(shí)在入口中將是什么樣子。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員可以選擇被標(biāo)記為“保存草稿”的圖標(biāo)(945),該圖標(biāo)(945)允許用戶懸置提交過程,并在以后返回完成它。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,當(dāng)已經(jīng)填充要求的字段時(shí),開發(fā)人員可以選擇“下一步”(950),以觀看提交過程中的下個(gè)界面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,界面包括“提交報(bào)批”圖標(biāo),該圖標(biāo)如所示那樣不能被選擇,因?yàn)橐箨P(guān)于應(yīng)用程序的更多信息。最后,在任何時(shí)刻,開發(fā)人員可以選擇“取消”(960)提交過程。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,取消提交過程導(dǎo)致丟失已經(jīng)關(guān)于應(yīng)用程序輸入的任何信息。
圖10示出跟隨圖9的界面,在該界面,開發(fā)人員可以上載與應(yīng)用程序相對(duì)應(yīng)的圖像。在這個(gè)例子中,在圖9中示出的界面中存在的一些項(xiàng)保留在圖10中,這些項(xiàng)包括打開商店視圖(940)、保存草稿(945)、下一步(950)、提交報(bào)批(955)、以及取消(960)。另外,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,界面現(xiàn)在包括“上一步”按鈕(1005),該“上一步”按鈕(1005)當(dāng)被選中時(shí),允許開發(fā)人員返回到圖9中示出的界面。
在這個(gè)例子中,向開發(fā)人員提供上載與應(yīng)用程序相對(duì)應(yīng)的多個(gè)圖像的機(jī)制。這些機(jī)制包括目錄圖標(biāo)(1010)、展示圖標(biāo)(1015)、詳細(xì)頁(yè)面圖像(1025)、桌面圖標(biāo)(1020)、濺射圖像(1030)、及多個(gè)截屏(1035A-1035N)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員可以在這時(shí)提交應(yīng)用程序,或者可以在提交應(yīng)用程序之前,在用戶界面的另一個(gè)頁(yè)面處繼續(xù)包括關(guān)于應(yīng)用程序的更多細(xì)節(jié)。
圖11示出跟隨圖10的界面,該界面便于將應(yīng)用程序發(fā)送到倉(cāng)庫(kù)。同樣,如圖9和10所示,界面的這個(gè)頁(yè)面也包括來自界面的先前頁(yè)面的一定項(xiàng),這些項(xiàng)包括打開商店視圖(940)、保存草稿(945)、上一步(1005)、下一步(950)、提交報(bào)批(955)、以及取消(960)。在界面的這個(gè)頁(yè)面中,開發(fā)人員可以輸入應(yīng)用程序ID(1110)(即,識(shí)別應(yīng)用程序的單獨(dú)字母、單獨(dú)數(shù)字、或字母-數(shù)字序列)、版本號(hào)(1115)(即,識(shí)別應(yīng)用程序版本的單獨(dú)字母、單獨(dú)數(shù)字、或字母-數(shù)字序列)、及版本描述(1120)(即,應(yīng)用程序的特定版本的描述)。開發(fā)人員發(fā)送到倉(cāng)庫(kù)的應(yīng)用程序可以是先前提交的應(yīng)用程序的更新版本。界面的這個(gè)頁(yè)面允許開發(fā)人員包括關(guān)于當(dāng)前應(yīng)用程序與先前提交的應(yīng)用程序的關(guān)系的重要信息,使得將在倉(cāng)庫(kù)中進(jìn)行連接。例如,先前提交的應(yīng)用程序可由同一個(gè)應(yīng)用程序號(hào)(但用不同版本號(hào))識(shí)別,并且通過將這種信息提供給倉(cāng)庫(kù)來進(jìn)行這種連接。圖11還允許開發(fā)人員規(guī)定要求哪個(gè)JRE版本(1125)、以及規(guī)定關(guān)于Java沙箱的信息(1130)(即,當(dāng)應(yīng)用程序在Java沙箱內(nèi)執(zhí)行時(shí),Java沙箱應(yīng)當(dāng)與什么許可相關(guān)聯(lián))。
在發(fā)布應(yīng)用程序后,開發(fā)人員可能希望檢查和/或編輯關(guān)于應(yīng)用程序的信息,和/或編輯應(yīng)用程序本身。例如,如果新版本簡(jiǎn)單地是為了解決在應(yīng)用程序的先前版本的執(zhí)行期間產(chǎn)生的關(guān)于JAR的問題,則開發(fā)人員可能希望向應(yīng)用程序的新版本提供原始應(yīng)用信息。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,倉(cāng)庫(kù)可以提供與在圖9-11中示出的那些相似的界面,以允許開發(fā)人員檢查關(guān)于他們已經(jīng)提交(或要提交)的應(yīng)用程序的信息。圖12示出了根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例的界面,該界面允許開發(fā)人員看到已經(jīng)提交給倉(cāng)庫(kù)的全部應(yīng)用程序(1205)、以及應(yīng)用程序的最新版本的狀態(tài)(1210)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,這包括已經(jīng)發(fā)布的應(yīng)用程序、以及僅僅已經(jīng)提交或批準(zhǔn)的那些應(yīng)用程序。另外,這個(gè)界面可以包括還未被提交的應(yīng)用程序。換句話說,該界面允許開發(fā)人員觀看處理中的全部階段的應(yīng)用程序。另外,該界面允許開發(fā)人員選擇創(chuàng)建新的應(yīng)用程序(1215)、或顯示發(fā)布的應(yīng)用程序的統(tǒng)計(jì)數(shù)字(1220)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,開發(fā)人員也可以觀看來自應(yīng)用程序的檢查員的檢查內(nèi)容。例如,檢查員可能要求開發(fā)人員確定關(guān)于應(yīng)用程序的各種問題,這些問題包括但不限于在應(yīng)用程序中使用的圖標(biāo)、應(yīng)用程序的描述、應(yīng)用程序中的編碼問題、等等。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,檢查內(nèi)容可以是交互的(例如,可能要求開發(fā)人員回答關(guān)于正在檢查的應(yīng)用程序的問題)。
圖13示出了允許開發(fā)人員觀看關(guān)于發(fā)布的應(yīng)用程序的統(tǒng)計(jì)數(shù)字的界面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,統(tǒng)計(jì)數(shù)字實(shí)時(shí)地呈現(xiàn),并且隨著用戶使用應(yīng)用程序而更新。明確地說,在圖13中示出的界面的這個(gè)頁(yè)面表明了與提交的應(yīng)用程序有關(guān)的用戶活動(dòng)的曲線圖。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,該界面允許開發(fā)人員打開存儲(chǔ)視圖(1305)(即,觀看應(yīng)用程序,如它在入口中被發(fā)現(xiàn)的那樣)。界面還允許開發(fā)人員撤回應(yīng)用程序(1310),使得它不再可被用戶訪問,或者返回到應(yīng)用程序的列表(1315)(即,如圖12所示的應(yīng)用程序的列表)。
如以上解釋的那樣,倉(cāng)庫(kù)收集關(guān)于應(yīng)用程序的使用的信息,并且生成關(guān)于該數(shù)據(jù)的統(tǒng)計(jì)數(shù)字和圖表。在這個(gè)例子中,該界面允許用戶看到關(guān)于計(jì)數(shù)滴答(即,事件發(fā)生的次數(shù))和日期滴答(即,記錄計(jì)數(shù)滴答的日期)的兩維曲線圖(1325)的信息。這個(gè)例子包括對(duì)于應(yīng)用程序的全部版本,關(guān)于全部事件(1320)的信息。這些包括正面事件,如詳細(xì)觀看(即,用戶已經(jīng)請(qǐng)求觀看關(guān)于應(yīng)用程序的詳細(xì)信息的次數(shù))、預(yù)覽(即,用戶已經(jīng)預(yù)覽應(yīng)用程序的次數(shù))、安裝(即,用戶已經(jīng)安裝應(yīng)用程序的次數(shù))、以及運(yùn)行次數(shù)(即,用戶已經(jīng)運(yùn)行應(yīng)用程序的次數(shù))。界面還包括關(guān)于負(fù)面事件的信息,這些負(fù)面事件包括失敗的安裝(即,用戶已經(jīng)嘗試安裝應(yīng)用程序,且未能安裝應(yīng)用程序的次數(shù))、重新安裝(即,用戶在第一次之后已經(jīng)安裝應(yīng)用程序的次數(shù))、崩潰(即,應(yīng)用程序已經(jīng)到達(dá)不可恢復(fù)的錯(cuò)誤狀態(tài)的次數(shù))、以及除去(即,用戶已經(jīng)卸載應(yīng)用程序的次數(shù))。另外,該界面允許開發(fā)人員基于應(yīng)用程序的版本(1320)來觀看關(guān)于應(yīng)用程序的統(tǒng)計(jì)數(shù)字。
圖14示出了界面的另一個(gè)頁(yè)面,其中,開發(fā)人員可以更新應(yīng)用程序。明確地說,圖14示出這樣一種界面,該界面允許開發(fā)人員提交應(yīng)用程序的新版本以便批準(zhǔn)。在圖14中示出的界面包括與在圖12-13中示出的那些相似的選項(xiàng),這些選項(xiàng)包括打開存儲(chǔ)視圖(1305)的選項(xiàng)、和返回到應(yīng)用程序的列表(1315)的選項(xiàng)。在這個(gè)例子中,界面允許開發(fā)人員輸入版本號(hào)(1415)和版本描述(1420)、以及上載用于應(yīng)用程序的新版本的JAR文件(1425)、上載應(yīng)用程序的新版本的預(yù)覽(1430)、以及輸入幫助頁(yè)面URL(1435)的功能。盡管未示出,這個(gè)界面還可以包括關(guān)于應(yīng)用程序的先前發(fā)布版本的信息,并且允許開發(fā)人員在倉(cāng)庫(kù)上撤回那些版本而不可用于用戶(1455)(排除開發(fā)人員-他保持對(duì)版本的訪問)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,這個(gè)界面可以示出關(guān)于應(yīng)用程序的信息,這些應(yīng)用程序已經(jīng)由于消費(fèi)者抱怨而被隔離。
在本發(fā)明的一個(gè)實(shí)施例中,使由開發(fā)人員提交并由倉(cāng)庫(kù)發(fā)布的應(yīng)用程序可用于用戶。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,通過內(nèi)容傳送服務(wù)(即,Java商店界面)使應(yīng)用程序可用于用戶。圖15-20表明了可用于用戶以便在倉(cāng)庫(kù)中檢索應(yīng)用程序的幾個(gè)界面。
圖15示出了Java商店界面的概況。如圖所示,該界面允許用戶通過部門(1505)來選擇應(yīng)用程序。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,應(yīng)用程序所處的部門由開發(fā)人員已賦予的類別來確定。而且,該界面可包括在Java商店內(nèi)受歡迎的應(yīng)用程序(即,“頂級(jí)應(yīng)用程序”)的列表(1515)、以及用戶最近已經(jīng)觀看的那些應(yīng)用程序(1520)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,用戶可具有賬戶(1530),該賬戶(1530)跟蹤和存儲(chǔ)關(guān)于用戶在商店內(nèi)的活動(dòng)的信息。另外,該界面允許用戶觀看他或她已經(jīng)購(gòu)買的應(yīng)用程序(1525)(即,如圖12所示)。
根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,Java商店可以包括用于瀏覽應(yīng)用程序的其它選項(xiàng)(1510)。在示出的例子中,這些選項(xiàng)包括“最新(What’s New)”、“頂級(jí)社交應(yīng)用程序(Top Social Apps)”、“我們的挑選(Our Picks)”、“今天流行(Popular Today)”以及“頂級(jí)品牌(Top Brands)”。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇標(biāo)題為“最新”的圖標(biāo)向用戶提供專用于最新發(fā)布的應(yīng)用程序的頁(yè)面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,用戶也可以從最經(jīng)常預(yù)覽的應(yīng)用程序中選擇。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇“頂級(jí)社交應(yīng)用程序”向用戶提供指向已被特征化為“社交網(wǎng)絡(luò)”應(yīng)用程序的應(yīng)用程序的頁(yè)面(即,社交網(wǎng)絡(luò)類別由開發(fā)人員選擇,或者應(yīng)用程序在社交網(wǎng)絡(luò)部門中找到)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇“我們的挑選”向用戶提供專用于由Java商店的管理人員或Java商店團(tuán)體的其它成員選擇的應(yīng)用程序的頁(yè)面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇“今天流行”向用戶提供專用于當(dāng)天被使用最多的應(yīng)用程序的頁(yè)面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,選擇“頂級(jí)品牌”向用戶提供專用于由最受歡迎的開發(fā)人員(即,其應(yīng)用程序被使用最多的開發(fā)人員)提供的應(yīng)用程序的頁(yè)面。
圖16示出了當(dāng)用戶已經(jīng)從圖15的界面中選擇了“今天流行”時(shí)提供給用戶的界面。相應(yīng)地,該界面現(xiàn)在示出來自類別“今天流行”的應(yīng)用程序的選擇(1610)。而且,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,在圖16中的具體截屏示出了其中用戶已把光標(biāo)放置在用于“Blocko”應(yīng)用程序的圖標(biāo)上的界面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,當(dāng)用戶把光標(biāo)放置在具體應(yīng)用程序上時(shí),關(guān)于該應(yīng)用程序的細(xì)節(jié)(1615)可出現(xiàn)在屏幕上。如上所述,這些細(xì)節(jié)可由開發(fā)人員在提交應(yīng)用程序時(shí)輸入。
圖17示出了其中用戶已經(jīng)瀏覽部門的界面。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,用戶可把光標(biāo)放置在瀏覽時(shí)感興趣的部門上,這提供了類別和子類別的分級(jí)列表(1705)。例如,當(dāng)用戶把光標(biāo)放置在詞“游戲”上時(shí),游戲類型的列表出現(xiàn)在用戶界面中作為“游戲”的子類別。當(dāng)用戶把光標(biāo)放置在子類別之一(即,“體育”)上時(shí),另一個(gè)列表出現(xiàn)(即,體育的子類別)。盡管未示出,但分級(jí)列表可以包括應(yīng)用程序以及類別。在這個(gè)例子中,用戶已經(jīng)選擇了作為體育和游戲的子類別的棒球。
圖18示出了當(dāng)選擇了棒球時(shí)可向用戶呈現(xiàn)的一個(gè)界面。在這個(gè)例子中,向用戶呈現(xiàn)用于瀏覽棒球-有關(guān)應(yīng)用程序的幾種方法。這些包括“特色應(yīng)用程序”(1805)、“最流行”(1810)、以及“頂級(jí)挑選”(1815)。另外,可向用戶呈現(xiàn)過濾器(1820),該過濾器(1820)允許用戶減少可用應(yīng)用程序的數(shù)量。圖19示出了當(dāng)用戶選擇觀看“全部結(jié)果”(1905)時(shí)向他或她呈現(xiàn)的界面。該界面向用戶提供了關(guān)于應(yīng)用程序的基本信息(即,不是關(guān)于由開發(fā)人員提供的應(yīng)用程序的全部信息)。在這個(gè)例子中,示出的信息包括圖標(biāo)(1910)、應(yīng)用程序標(biāo)題(1915)、應(yīng)用程序的評(píng)級(jí)(1920)、以及應(yīng)用程序的價(jià)格(1925)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,在這個(gè)界面中顯示的內(nèi)容可取決于用戶而變化。例如,可向高級(jí)用戶提供比標(biāo)準(zhǔn)用戶多的信息。
圖20示出了提供關(guān)于選擇的應(yīng)用程序的詳細(xì)信息的界面。明確地說,在這個(gè)例子中,用戶已經(jīng)選擇了“棒球’09”應(yīng)用程序(2005)。這時(shí),該界面顯示發(fā)布該應(yīng)用程序的公司(2010)、應(yīng)用程序的發(fā)行日期(2015)、以及應(yīng)用程序所屬的類別(2020)。而且,該界面包括應(yīng)用程序的概況(2025)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,在應(yīng)用程序的概況中發(fā)現(xiàn)的文本可以包括由開發(fā)人員作為“詳細(xì)信息”輸入的信息。而且,該界面示出了應(yīng)用程序的圖像(2030),并且為用戶提供預(yù)覽應(yīng)用程序(2034)或者購(gòu)買應(yīng)用程序(2040)的功能。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,這個(gè)界面還可以包括開發(fā)人員信息。明確地說,這個(gè)界面可以包括關(guān)于同一開發(fā)人員的其它應(yīng)用程序的信息。
本發(fā)明的實(shí)施例實(shí)際上可以在任何類型的計(jì)算機(jī)上實(shí)施,而與使用的平臺(tái)無關(guān)。例如,如圖21所示,計(jì)算機(jī)系統(tǒng)(2100)包括一個(gè)或多個(gè)處理器(2102)、相關(guān)存儲(chǔ)器(2104)(例如,隨機(jī)存取存儲(chǔ)器(RAM)、高速緩沖存儲(chǔ)器、閃存、等等)、存儲(chǔ)設(shè)備(2106)(例如,硬盤、諸如緊致盤驅(qū)動(dòng)器或數(shù)字視頻盤(DVD)驅(qū)動(dòng)器的光學(xué)驅(qū)動(dòng)器、閃存棒、等等)、以及當(dāng)今計(jì)算機(jī)典型的多個(gè)其它元件和功能(未示出)。計(jì)算機(jī)(2100)還可以包括輸入裝置,諸如鍵盤(2108)、鼠標(biāo)(2110)、或麥克風(fēng)(未示出)。而且,計(jì)算機(jī)(2100)可以包括輸出裝置,如監(jiān)視器(2112)(例如,液晶顯示器(LCD)、等離子顯示器、或陰極射線管(CRT)監(jiān)視器)。計(jì)算機(jī)系統(tǒng)(2100)可以經(jīng)網(wǎng)絡(luò)接口連接(未示出)連接到網(wǎng)絡(luò)(2114)(例如,局域網(wǎng)(LAN)、諸如互聯(lián)網(wǎng)之類的廣域網(wǎng)(WAN)、或任何其它相似類型的網(wǎng)絡(luò))上。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,多種不同類型的計(jì)算機(jī)系統(tǒng)存在,并且以上提到的輸入和輸出裝置可以采取其它形式。例如,計(jì)算機(jī)系統(tǒng)(2100)可以是具有多個(gè)刀片的服務(wù)器系統(tǒng)。一般而言,計(jì)算機(jī)系統(tǒng)(2100)至少包括實(shí)踐本發(fā)明的實(shí)施例所必需的最少的處理、輸入和/或輸出裝置。
完成本發(fā)明的實(shí)施例的計(jì)算機(jī)可讀代碼可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,如在緊致盤(CD)、軟盤、磁帶、物理存儲(chǔ)器、或任何其它物理計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,該物理計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括存儲(chǔ)計(jì)算機(jī)可讀程序代碼以完成本發(fā)明實(shí)施例的功能。在本發(fā)明的一個(gè)實(shí)施例中,計(jì)算機(jī)可讀程序代碼當(dāng)由處理器執(zhí)行時(shí),配置成完成本發(fā)明的實(shí)施例。