標籤: 如何寫文案

  • Linux下9種優秀的代碼比對工具推薦

    Linux下9種優秀的代碼比對工具推薦

    大家好,我是良許。

    在我們編寫代碼的時候,我們經常需要知道兩個文件之間,或者同一個文件不同版本之間有什麼差異性。在 Windows 下有個很強大的工具叫作 BeyondCompare ,那在 Linux 下需要用到什麼工具呢?

    本文介紹 9 種 Linux 下常用的 9 種代碼比對工具,不僅有命令行工具,還有 GUI 界面工具,讓你輕鬆進行代碼比對。

    1. diff命令

    diff 命令是 Linux 下自帶的一個強大的文本比對工具,而且使用起來非常方便。對於它的使用,我之前也單獨寫過一篇文章介紹,點擊下方鏈接可以查看。

    教你一招Linux下文本比對方法

    diff 命令在大多數的 Linux 發行版里已經預裝了,它可以逐行比對兩個文本文件,並輸出它們的差異點。更多介紹可以直接查看它的 man 手冊。

    $ man diff
    

    但是,diff 命令雖然強大,但它的輸出結果實在是太感人了,不直觀也不清晰。於是,有大佬為了彌補這個缺點,基於 diff 開發了更強大的工具。這裏推薦兩個:colordiffwdiff

    colordiff命令

    colordiff 是一個 Perl 腳本工具,它的輸出結果和 diff 命令一樣,但是會給代碼着色,並且具有語法高亮功能。同時,你如果不喜歡它的默認顏色的話,還可以自定義主題。

    你可以自行安裝 colordiff 到你的電腦,根據不同的發行版選擇不同的安裝命令。

    $ yum install colordiff             [On CentOS/RHEL/Fedora]
    $ dnf install colordiff             [On Fedora 23+ version]
    $ sudo apt-get install colordiff    [On Debian/Ubuntu/Mint]
    

    同樣,你可以使用 man 命令查看它的幫助文檔:

    $ man colordiff
    
    wdiff命令

    diff 命令是逐行比較差異,而 wdiff 更變態,是逐字比較。所以如果你的文本只是修改了少數一些詞語的話,使用 wdiff 命令將更加高效。

    安裝命令如下:

    $ yum install wdiff             [On CentOS/RHEL/Fedora]
    $ dnf install wdiff             [On Fedora 23+ version]
    $ sudo apt-get install wdiff    [On Debian/Ubuntu/Mint]
    

    更詳細內容可以查看它的 man 手冊。

    $ man wdiff
    

    2. vimdiff命令

    vimdiff 等同於 vim -d 命令,即 Vim 編輯器的 diff 模式。

    該命令後面通常會接兩個或多個文件名作為參數,這些文件會同時在 Vim 編輯器的分割窗口中打開,並高亮显示文件中內容有差異的部分。

    它的中文主頁是:http://vimcdoc.sourceforge.net/doc/diff.html

    以上介紹的兩款是 Linux 命令行的對比工具,我們再來看一些 GUI 比對工具。

    3. Kompare

    Kompare 是基於 diff 的一個 GUI 工具,使用者可以很方便看到文件之間的差異,並且支持合併這些差異。

    Kompare 的特性有如下:

    • 支持多種 diff 格式;
    • 支持目錄之間的比對;
    • 支持讀取 diff 文件;
    • 自定義界面;
    • 創建及應用源文件的 patch 文件。

    該工具的主頁為:https://www.kde.org/applications/development/kompare/

    4. DiffMerge

    DiffMerge 是一個跨平台的 GUI 文本比對工具,具有 Linux ,Windows ,macOS 三大平台版本。我們知道,BeyondCompare 是一款收費軟件,所以如果你們公司的版權要求比較高的話,不妨考慮一下 DiffMerge工具。

    DiffMerge 具有兩大功能:1. 圖示化显示兩個文件之間的改變。包含內部行高亮和完整的編輯支持。2. 圖示化显示三個文件之間的改變。允許自動合併(當可以安全操作時)和對結果文件完全編輯控制。

    它具有以下特性:

    • 支持文件夾比對;
    • 集成文件瀏覽器;
    • 高度可配置。

    該工具的主頁為:https://sourcegear.com/diffmerge/

    5. Meld

    Meld 是一個輕量級 GUI 代碼比對工具,它支持用戶比對文件、目錄,並且高度集成版本控制軟件。但針對軟件開發人員,它的以下幾個特性尤為吸引人:

    • 執行雙向和三向差異併合並
    • 輕鬆地在差異和衝突之間導航
    • 逐個文件地比較兩個或三個目錄,显示新文件,缺失文件和更改文件
    • 支持許多版本控制系統,包括 Git,Mercurial,Bazaar 和 SVN 等。

    它的官網為:http://meldmerge.org/

    6. Diffuse

    Diffuse 是另外一款很受歡迎的,免費,小巧,也十分簡單的 GUI 文本差異比對合併工具,它是用 Python 寫成的,具有兩個主要功能:文件比對及版本控制,允許文件編輯、合併,並且輸出兩個文件的差異點。

    你可以使用它查看文本比對小結,使用鼠標選擇文件里的某行進行編輯。它的其它特性包括:

    • 語法高亮
    • 快捷鍵便於文本導航
    • 無限次撤銷
    • 支持 unicode 編碼文件
    • 支持許多版本控制系統,包括 Git,Mercurial,Bazaar 和 SVN 等。

    它的官網為:http://diffuse.sourceforge.net/

    7. XXdiff

    XXdiff 是一款免費、強大的文件及文件夾差異比對及合併工具,它可以運行在很多類 Unix 系統上。不過它有個限制就是它不支持 unicode 文件,也沒法辦法直接編輯文件。

    它具有以下特性:

    • 遞歸對比文件及文件夾
    • 高亮显示差異點
    • 合併差異點,導出結果
    • 支持外部 diff 工具,比如:GNU diff,SIG diff ,Cleareddiff ,以及其它更多工具
    • 支持腳本拓展

    8. KDiff3

    KDiff3 是另外一種很強大的跨平台差異比對及合併工具,它是由 KDevelop 開發而成,可以在所有類 Unix 平台上運行,包括 Linux ,Mac OS ,Windows 等。

    它可以比對或合併兩到三個文件或目錄,具有以下特性:

    • 可以逐句、逐字對比差異
    • 支持自動合併
    • 內置編輯器,可以手動解決衝突
    • 支持 unicode ,UTF-8 等各種編碼格式
    • 支持打印差異

    它的官網為: http://kdiff3.sourceforge.net/

    9. TkDiff

    TkDiff 是另外一種跨平台,易於使用的 GUI 文本比對工具,可以運行在 Linux ,Windows 及 MacOS 系統上。它同樣提供一個左右分開的界面,用於查看對比的兩個文件。

    但是,它也有一些其它文本對比工具沒有的功能,比如差異書籤,以及一個便於快速定位導航差異點的導航圖。

    它的官網為:https://sourceforge.net/projects/tkdiff/

    公眾號:良許Linux

    有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

  • F-貿聯營收隨 Tesla 出貨倍增 2015 年可望翻倍成長

    從 2005 年開始就與美國電動車大廠 Tesla 合作,而貿聯的營收比重也隨著 Tesla 成長,從 2013 年的 3~5%,到 2014 年倍增到 8% 至 10%,有機會晉升貿聯的前五大客戶。   據了解,2013 年同期貿聯打入 Tesla 的零件料號總數約 45 個,目前已倍增到 100 個,法人推估,平均貿聯交貨每台電動車用線的成本可達 300~400 美元,以 2015 年 Tesla 出貨量上看 10  萬輛來看,2015 年對貿聯的營收貢獻可望維持近倍成長,營收占比拉高至 15~20%。  

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!

  • Tesla 第二產線將完工 預估產能跳增 3 倍

    近 3 個月前,特斯拉一度為了建置第 2 條產線而短暫停工,現在有分析師指出,擴廠工程已接近完成,且推估新產線產能還將跳增逾 3 倍。   Global Equities Research 分析師 Trip Chowdhry 最近參訪完特斯拉廠房後指出,新產線運轉已沒有問題,預估每週可產出 3,000 輛電動車。   特斯拉曾在第二季財報上揭露,原有產線每週產能約 800 輛,Chowdhry 預測約莫再 4 至 6 週的時間,舊產線產出即可提升至 1,000 輛。另外,Chowdhry 還注意到工廠內仍有許多閒置空間,似乎是預留給特斯拉正在開發的新一代平價電動車 Model 3。   廠房設施重整約花了特斯拉 1 億美元,若不算超級電池工廠,這是該公司史上最大單筆投資計畫。第 2 條產線開始投產後,特斯拉將可以 2 條產線同時生產 Model S 轎車與 Model X 運動休旅車。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※想知道最厲害的網頁設計公司"嚨底家"!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

  • 中鋼參一腳 入股特斯拉馬達供應商富田

    中鋼集團於上周正式入股美國電動車大廠特斯拉(Tesla)馬達獨家供應商富田電機,成為其最大股東後,中鋼董事長鄒若齊 10 月 1 日首度透露,中鋼已向特斯拉釋出善意,將全力協助富田提升生產能力,希望能夠達到即時供料的能力,確保三方的穩定供應鏈關係。   中鋼轉投資、位於中部的富田公司,現在是特斯拉唯一的馬達材料供應商。中鋼日前投資富田,就是考量這一層供料關係,進而希望能夠強化與特斯拉的合作。   鄒若齊說,富田是中鋼重要的電磁鋼片客戶,但以它目前的產能,一年配合特斯拉的需求,是有能力供應幾千輛電動車所需的馬達給特斯拉。但若要富田供應上萬輛所需的馬達,恐就有困難。因此中鋼投資富田,最大目的就是要協助提升它的生產能力,希望未來能夠做到即時供料給特斯拉的目標,以穩定特斯拉的信心。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 看好電動車!三星 LG 等韓企搶入功率半導體市場

    看好物聯網、電動車及智慧裝置未來的發展潛力,南韓大型企業正在全力衝刺功率半導體 (power semiconductor)。南韓媒體 ETNews 2 日報導,LG 電子 (LG Electronics) 正在積極研發功率半導體科技,該公司副董事長 Ku Bon-jun  2014 年稍早就曾親自訪問日本某家半導體公司,並取得技術顧問服務。分析顯示,Ku 這趟行程應該是為了開發 LG 集團瞄準的下一個成長動能──電動車。   功率半導體不但對耗電量有直接影響,也關係到電動車的品質好壞。LG 電子最近收購了 IC 設計商 Silicon Works,也是為了同樣的目的。   三星電子 (Samsung Electronics) 也在持續關注功率半導體的研發部門。三星除了自行開發行動裝置與面板的電源管理 IC 外,還打算發展應用於電動車、可再生能源的相關裝置。三星已經成功在自家的通訊晶片「Exynos Modem 303」導入電源管理解決方案「封包追蹤 (envelope tracking)」技術。這種技術可即時依據頻率、耗電量分配電力,並x連結至基頻 IC、電源管理 IC 以及無線功率放大器 (PA)。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?

  • Tesla 神秘代號 D 新車 10/9 巴黎車展亮相

    Tesla 神秘代號 D 新車 10/9 巴黎車展亮相

        巴黎國際汽車大展將在 10 月 4 日登場,電動車大廠特斯拉(Tesla)也確定不會缺席。特斯拉預告 9 日將發表代號 D 的神秘新車。除此之外,特斯拉還有更多消息將宣佈,為車展提前炒熱話題。   特斯拉旗下有轎車 Model S、SUV 運動休旅車 Model X,以及正在開發之中的平價車款 Model 3。按此命名慣例,神秘新車預料將稱為 Model D。   特斯拉口風甚緊,此前外界對 Model D 毫無所悉,直至時機成熟,才由執行長 Elon Musk 透過推文對外宣布,且暗示還有其它產品消息。   Musk 曾嘲笑燃料電池,因此可以確定的是 Model D 絕非燃料電池動力車。至於 Musk 口中的其它消息指的可能是升級現有車種硬體設備,如更先進的車用資訊娛樂系統,也有傳言指出可能是全新的電動摩托車,以使特斯拉電動車產品線更多元化。     (Source:)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

  • 特斯拉將發表自動駕駛電動車?本週見分曉

    美國電動車大廠特斯拉(TESLA)將挺進無人車市場?特斯拉執行長穆斯克(Elon Musk)上週在推特上發表「是時候推出D和其他東西了」的推文,外界揣測將會推出新款Model D的電動車,且可能有自動駕駛功能。

    About time to unveil the D and something else

    — Elon Musk (@elonmusk)

    福斯(Volkswagen)、賓士(Mercedes-Benz)等國際車廠先後投入自動駕駛無人車的研發,穆斯克在此之前也曾表示,特斯拉正在研發多項電動車相關技術,包括預計在三年內推出具自動駕駛功能的電動車。據中時報導,穆斯克日前接受CNNMoney訪問時,即表示「再幾個月就能推出自動駕駛車」,且特斯拉電動車在明年可能就能達到90%行程由自動駕駛進行的目標。這樣的功能相當適合高速公路駕駛。

    而穆斯克的「D和其他東西」的推文,似乎指向豪華電動車Model S之外的另一款新車,且可能搭配「自動走道」(automated lane)技術。自動走道技術是一種智能駕駛系統,能讓車體自動保持在車道上行進。在車道劃分明確的高速公路上,只要車款安裝「自動車道」功能,就能讓汽車自動在車道上行駛。

    十月9日將舉行巴黎國際汽車大展,穆斯克的推文,很可能代表特斯拉將在該展上發表眾所矚目的電動休旅車、大眾車,以及自動駕駛科技。除此之外,鴻海董事長郭台銘本周末首度搭乘白色特斯拉Model S出席活動,也為特斯拉與鴻海之間的合作進展增添了不少想像空間。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

  • 轉銷商囤貨致民眾難買?Switch 日本二手價較新品高 1 成

    任天堂(Nintento)日前雖稱 Switch 遊戲機生產將在近期內恢復正常,不過因宅需求夯,遊戲機持續維持高人氣,加上疑似有轉銷商囤貨,導致一般民眾依舊難於買到 Switch,讓 Switch 日本二手價當前仍較新品價高出 1 成。

    日經新聞 14 日報導,任天堂雖曾在 6 月時稱 Switch 遊戲機生產將在近期內恢復正常,不過因宅需求夯,提振遊戲機產品持續維持高人氣,加上疑似有以高價轉賣為目的的「轉銷商」囤貨,導致 Switch 在日本市場上依舊難入手,目前二手價(網拍價)仍較新品價高出約 1 成。

    在調查營運網拍比較網站 aucfan 的價格行情後得知,7 月份 Switch 平均網拍成交價為 35,699 日圓,和 4 月時的高點相比雖大幅便宜了 3 成,不過仍高於新品的希望零售價格(32,978 日圓)。

    報導指出,仍有眾多消費者表示,「買不到 Switch」;日本國內分析師表示,「以高價轉賣為目的的『轉銷商』囤貨,讓一般消費者難於買到 Switch」,預估二手價要回復正常水準仍需時間。

    任天堂 14 日上漲 0.23%,收 51,320 日圓;今年迄今股價累計大漲 16.7%,表現遠優於東證一部指數(TOPIX)同期間的下挫 5.69%。

    新聞來源:https://ccc.technews.tw/2020/08/17/japan-used-switch-is-10-percent-higher-than-new-product/

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

  • 全球相機市占前五強出爐!Nikon 被超車、Sony 衝上第二名

    數位相機近年銷售逐漸下滑,眾品牌逐漸調整策略,大舉擁抱更輕巧的無反相機,也讓市占排名出現變化。《日經新聞》數據部門近期釋出 2019 年全球相機市占排行前五名,相較於去年出現不少變化。

    第一名仍是業界龍頭 Canon,擁有接近一半的市占率,且對比 2018 年還增加了 2.4%,現在累積至 45.4%。說明即便面臨富士、Sony 在無反領域持續進攻,Canon 仍以自身步調推出新產品,今年亦發表 EOS R5、R6 以及一系列 RF 鏡頭,有望在專業領域搶下更多死忠用戶。

    Sony 則在 2019 年首度超越 Nikon,隨著 A7 III 獲得熱烈好評,消費級別的 a6000 系列以及 RX100 也都有斬獲,市占率小幅增加至 20.2%,全年上升 0.9%。至於 Nikon 由於較晚踏入無反領域,面臨不少挑戰,2019 年市占率下滑 1.6%,整體落在 18.6%。外媒《PetaPixel》分析,隨著 Nikon 投入無反 Z 系列,今年應該能稍微止血。

    排行第四、第五的分別是富士與 Panasonic,兩者市占率皆是 4.7%,前者全年下滑 0.4%,後者則是維持不動。至於近期遭到出售的 Olympus 在 2018 年原本是第五位,如今因銷售量下滑,被擠出前五名。

    對於相機品牌來說,2019 年依舊不好過。數據亦顯示全年出貨數量僅 1483 萬台,下滑了 22%。今年碰上疫情更是雪上加霜,根據日本相機影像器材工業協會(CIPA)數據,上半年(1-6 月)數位相機總出貨量僅有 351 萬台,對比去年同期少了 51.9%,是 CIPA 於 2000 年開始公布數據以來,史上最低點的成績。

    新聞來源:https://3c.ltn.com.tw/news/41345

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

  • Java的前生今世

    Java的前生今世

    Java作為一門編程語言,自誕生以來已經流行了20多年,在學習它之前,我們有必要先了解一下它的歷史,了解它是如何一步步發展到今天這個樣子。

    孕育

    上世紀90年代,硬件領域出現了單片式計算機系統,比如電視機機頂盒這些消費設備。這些設備的特點是處理能力和內存都有限。如果使用C++編寫程序,則對於這類設備來說過於龐大。

    所以需求便來了,為了適應這類設備,需要一種小型的計算機語言,Java便應運而生了。

    1991年,Sun公司的James Gosling, Mike Sheridan和Patrick Naughton發起了一個名為“Green”的項目小組,主要用於電視機頂盒這類消費設備。

    由於設備的處理能力和內存有限,所以要求語言短小、代碼緊湊。而對於電視機頂盒這類消費設備來說,廠商會選擇各種不同的CPU,所以要求語言可移植、不與特定的平台捆綁在一起

    出生

    Green項目組以C++為基礎,對C++進行了一些改造,並刪除了一些不太實用、複雜繁瑣的東西,開發出了名為“Oak”的語言,(Oka來自James Gosling辦公室外的橡樹)。

    成長

    挫折

    1992年夏天,Green項目組已經能夠演示Green操作系統、Oak的程序設計語言、類庫和其硬件。

    1992年9月,Green項目組發布了它的第一個名為“Start 7”的產品,該產品是一個個人数字助理設備,具有圖形界面和非常智能的遠程控制。

    1992年11月,Green項目被剝離,成為Sun Microsystems的全資子公司Firstperson。

    但是當時的硬件生產廠商對其項目並不感興趣,Firstperson花了一年多也沒找到希望購買其技術的買家。

    1994年,First Person公司解散,被重新納入Sun公司。Oak語言無法進入市場,也被暫時擱置下來。

    機遇

    在上面的過程中,Internet的萬維網也在不斷髮展。對於客戶機/服務器模型來說,萬維網需要做的是將超文本頁面轉換到屏幕的瀏覽器中。

    1994年6月到7月,Sun公司的團隊看到了互聯網的發展,一些圖形Web瀏覽器的出現讓他們認為互聯網可以演變成他們為有線電視所設想的相同的高度交互性媒體。經過三天的頭腦風暴后,該團隊將目標平台重新定位為萬維網平台。

    1994年中期,Oak語言的開發者意識到他們可以開發一個瀏覽器,WebRunner瀏覽器誕生。

    1995年,互聯網的發展帶給了Oak語言一個機遇。當時的網絡頁面是單調、死板的靜態頁面,業界希望頁面能夠“靈活”起來,並且希望代碼能夠通過網絡傳播進行跨平台運行。Oak的語言短小、可移植的特點和這些需求不謀而合。

    Sun公司首先推出了可以嵌入網頁並且可以隨同網頁在網絡上傳輸的Applet(Applet是一種將小程序嵌入到網頁中進行執行的技術)。

    設計者在設計WebRunner瀏覽器具有在網頁中執行內嵌代碼的能力,這種能力能讓網頁變得“靈活”。

    同年,Sun公司將Oak更名為Java(因為Oak已經被使用了,Java一詞來自咖啡),WebRunner瀏覽器也演變成了HotJava瀏覽器,HotJava瀏覽器完全使用Java開發。

    同年5月23日,Sun公司在Sun World會議上展示並正式發布了Java語言和HotJava瀏覽器,各大公司都紛紛停止了自己公司相關項目的開發,競相購買Java的使用許可證,併為自己的產品開發了相應的Java平台。

    發展

    1996年初,Sun公司發布了Java的第1個開發工具包(JDK1.0),這是Java發展的里程碑,標志著Java成為了一種獨立的開發工具。

    同年9月,約8.3萬個網頁應用了Java來製作。

    同年10月,Sun公司發布了Java平台的第1個即時編譯器。

    但是人們很快意識到Java1.0並不能用來進行真正的應用開發。

    1997年2月,JDK1.1面世,它彌補了JDK1.0的大多明顯缺陷,改進了反射能力,但是仍有局限性。

    1998年12月,Sun公司發布了第二代Java平台——JDK1.2。此次發布有幾個不同的版本,分別是標準版J2SE、用於手機等嵌入式設備的微型版J2ME、用於服務器端處理的企業版J2EE。

    此次發布是Java發展過程中最重要的里程碑,標志著Java的應用開始普及。

    2000年5月,JDK1.3、JDK1.4、J2SE1.3相繼發布。

    2001年9月,J2EE1.3發布。

    2002年2月,J2SE1.4發布。該版本提高了Java的計算能力,擴展了標準類庫,提高了系統性能。

    在此期間,Java Applet採用低調姿態,淡化了客戶端的應用,成為服務器端應用的首選平台

    2004年9月,J2SE 1.5版本發布,該版本為重大更新,是自1.1版本以來第一個對Java語言做出重大改進的版本。JavaOne會議后,版本数字從1.5改為5.0。

    2005年6月,Java SE 6發布。版本名稱發生了改變,如J2SE改為Java SE、J2ME改為Java ME、J2EE改為Java EE。該版本沒有對語言方面再進行改進,但是改進了其他性能,增強了類庫。

    2006年11月,Sun公司將Java技術作為免費軟件對外發布。

    2007年3月起,全世界所有開發人員均可對Java源代碼進行修改。

    隨着數據中心越來越依賴於商業硬件而不是專用服務器,Sun公司在2009年被Oracle收購。

    2011年,Oracle發布Java SE 7。

    2014年,Java SE 8發布,近20年以來,該版本有了最大改變,Java 8提供了一種“函數式”編程方式,可以很容易地表述併發執行的計算。

    2017年,Java SE 9發布。

    Java 9之後,Oracle宣布每6月更新一次版本。

    2020年3月,Java SE 14發布。

    Java Web的發展

    Java一路走來,為了適應時代發展,做出了許多改變。

    在早期,Java是為了解決傳統的單機程序設計問題,但由於種種原因,Java後來轉向Web。

    Web的最初模樣

    Web為了提供交互性內容採取了客戶端/服務器系統,但是交互性完全由服務器提供。服務器產生靜態頁面,這些靜態頁面是事先寫好的,將其提供給能夠解釋並显示的客戶端瀏覽器。

    但是我們的需求是千變萬化的,事先寫好的靜態頁面肯定不能滿足我們日益增長的需求。

    CGI

    CGI(Common Gateway Interfa,通用網關接口),它是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口,通俗的講CGI就像是一座橋,把網頁和WEB服務器中的執行程序連接起來,它把HTML接收的指令傳遞給服務器,再把服務器執行的結果返還給HTML頁。

    CGI使網頁變得不是靜態的,而是交互式的。

    但是CGI程序的響應時間依賴於發送的數據量的大小、服務器和網絡的負載,一旦網站變得複雜起來,響應就會變得非常慢且難以維護。

    Applet

    Applet是一種將小程序嵌入到網頁中進行執行的技術,含有Applet的網頁的HTML文件代碼中部帶有<applet></applet>這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小應用程序代碼並在本地計算機上執行該Applet。

    在當時,Java Applet 可以大大提高Web頁面的交互能力和動態執行能力。

    Java剛出現時,Applet是最受大家歡欣鼓舞的。但是由於當時的網絡環境的問題,安裝Java運行時環境(JRE)所需要的10MB帶寬對當時的用戶來說太過於恐怖。並且微軟的IE瀏覽器並並沒有包含JRE,所以Applet並沒有得到大規模應用。

    Servlet

    Servlet(Server+Applet),即服務器端小程序。Servlet能夠按照用戶提交的內容處理並返回相應的資源。可以輸出HTML頁面,動態展示數據。Servlet實現正確的接口就能夠處理Http請求。

    但是出現了一個很大的問題:HTML代碼需要在Servlet類中用Java代碼一行一行輸出,表現、邏輯、控制、業務等全部在Servlet類中,造成Servlet類代碼混亂(HTML代碼、Java代碼都寫在一起),重複性高、閱讀性差、開發困難。

    下面是使用Servlet在瀏覽器中輸出有一個h1標題的Hello World!字符串的HTML頁面。

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html;charset=utf-8");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>$Title$</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
    

    可想而知,更複雜的頁面得寫多少代碼!

    JSP

    為了解決上面的問題,Sun公司開發出了JSP。

    JSP(JavaServer Page)是一種動態網頁技術標準。JSP部署於網絡服務器上,可以響應客戶端發送的請求,並根據請求內容動態地生成HTML、XML或其他格式文檔的Web網頁,然後返回給請求者。JSP技術以Java語言作為腳本語言,為用戶的HTTP請求提供服務,並能與服務器上的其它Java程序共同處理複雜的業務需求。

    可以將JSP頁面看成是一個能內嵌Java代碼的HTML頁面。

    靜態部分(HTML頁面)是模板,可以提前寫好,動態部分(數據)可以由Java代碼動態生成。這樣一來就避免了在單純使用Servlet時HTML代碼和Java代碼都出現在Servlet類中的混亂情況。

    JSP在運行時被轉換成Servlet,因此JSP本質是Servlet。

    下面是使用JSP做和上面同樣的事情:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
        <h1>Hello World!</h1>
      </body>
    </html>
    

    仍使用HTML模板,但不是用Java語句一行一行“堆”出來,這多方便!

    使用了JSP后,雖然不用一行行地“堆”HTML頁面了,但是代碼混亂的問題仍沒有解決。表現、邏輯、控制、業務等代碼仍然寫在一塊了,只不過是從Servlet類中挪到JSP中了。

    這樣混亂的代碼極不利於團隊開發,如果項目很小,那還能理順,但如果項目非常大的話,那就“剪不斷,理還亂了”。

    所以這時候,我們急需將代碼分門別類的碼放整齊。

    JSP + JavaBean(Model1模式)

    JavaBean 是用Java語言寫成的可重用組件,JavaBean類要求:

    1. 類是公開的
    2. 具有私有成員變量
    3. 具有無參構造器
    4. 具有setter和getter方法

    上面已經說了,單純使用JSP會有大量的HTML代碼和Java代碼耦合在一起,不利於開發、維護、分工協作。

    我們舉一個登錄的例子:

    登錄大致需要以下幾步:

    1. 在瀏覽器中輸入用戶名、密碼
    2. 獲取數據,交給服務器
    3. 把數據處理成合適的形式
    4. 查詢數據庫的用戶表,看是否有一條用戶名和密碼都符合輸入的記錄。如果有,則登錄成功。

    單純使用JSP時,以上步驟全部在JSP登錄頁面中完成,該頁面既需要显示登錄表單、又需要獲取、處理數據、還需要查詢數據庫。太亂了!!

    有了JavaBean,我們可以將JSP中大量重複的代碼抽取成可重用的組件,封裝成JavaBean,在一定程度上減輕了代碼的耦合度,也在一定意義上實現了分層

    比如,用戶本身就是一個對象,我們可以將其抽取成JavaBean,數據的傳遞、查找都可使用JavaBean來完成。

    JSP+Servlet+JavaBean(Model2模式——MVC模式)

    上面介紹了Servlet、JSP、JSP+JavaBean,雖然在進步,但是都不盡如人意。那為什麼不讓它們結合起來取長補短?

    我們之所以使用JavaBean,就是為了讓Java代碼和HTML代碼分離開了,而Servlet也是一個Java類,為什麼不使用它呢?

    JSP+JavaBean已經實現了部分分層,使用MVC(Model-View-Controller)模式能進一步分層。

    Model(模型):MVC模式的中心組件,處理數據和邏輯。(比如JavaBean,但不止只有JavaBean)

    View(視圖):展示數據,渲染頁面。(前端頁面,比如HTML頁面、JSP頁面)

    Controller(控制器):從View接收數據,向Model發送數據,即用於控制數據分發。(比如Servlet)

    還用上面的登錄例子:

    1. 將JSP登錄頁面作為View

    2. Servlet類(Controller)用於接收用戶輸入的用戶名、密碼,將其封裝為用戶類(JavaBean),然後去數據庫中查詢。如果能查詢到則登錄成功。

    3. 將查詢結果返回給Controller,Controller根據查詢結果選擇一個合適的View,並將數據渲染到頁面,展示給用戶。(在本例中,如果查詢成功,則進入系統主頁;如果查詢不到,則用戶會看到一個登錄失敗頁面)

    使用了MVC設計模式后,代碼有了明顯的分層,結構清晰,各司其職。

    框架

    為了減輕工作量,各種框架逐漸出現在人們的視野中。

    所謂框架,可以把它看做一個半成品的項目/軟件,框架中有許多東西別人都已經幫我們寫好了,比如各種類、方法。

    我們要做的就是去了解、學習框架,在寫好的框架的基礎上、遵循框架的制定好的規則、按照自己的思路、結合框架的思想、去開發我們自己的項目。

    目前Java的Web開發中最出名的框架就是Spring家族了,比如SpringMVC、Spring、SpringBoot。

    熟悉、利用這些框架能夠幫助我們快速、優雅地開發出符合需求的項目。

    另,框架是別人寫好的輪子,有了它,我們能夠跑得更快,但是別忘了怎麼走。

    總結

    說了這麼多,相當於陪着Java從出生到現在走了一遍。我們可以看出Java的發展也不是一帆風順的,我認為Java之所以現在還這麼流行,原因之一就是它能夠一直保持更新,一直在根據時代的需求結合自身的特點不斷地做出改變。正如那句話「窮則變,變則通,通則達」。一門語言能做到這樣,身為人更應該要做到。

    如有錯誤,還請指正。

    參考資料:

    1. 百度百科
    2. 維基百科
    3. Java官方文檔
    4. Java核心卷一(第10版)
    5. Java編程思想(第4版)

    文章首發於公眾號『行人觀學』

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!