日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java DSL简介(收集整理)

發布時間:2023/11/30 java 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java DSL简介(收集整理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、領域特定語言(DSL)

領域特定語言(DSL)通常被定義為一種特別針對某類特殊問題的計算機語言,它不打算解決其領域外的問題。對于DSL的正式研究已經持續很多年,直 到最近,在程序員試圖采用最易讀并且簡煉的方法來解決他們的問題的時候,內部DSL意外地被寫入程序中。近來,隨著關于Ruby和其他一些動態語言的出 現,程序員對DSL的興趣越來越濃。這些結構松散的語言給DSL提供某種方法,使得DSL允許最少的語法以及對某種特殊語言最直接的表現。

這里將描述怎樣使用Java語言來編寫領域特定語 言,并將建議一些組建DSL語言時可采用的模式。

Java適合用來創建內部領域特定語言嗎?

在我們審視Java語言是否可以作為創建DSL的工具之前,我們首先需要引進“內部DSL”這個概念。一個內部DSL在由應用軟件的主編程語言創 建,對定制編譯器和解析器的創建(和維護)都沒有任何要求。Martin Fowler曾編寫過大量各種類型的DSL,無論是內部的還是外部的,每種類型他都編寫過一些不錯的例子。但使用像Java這樣的語言來創建DSL,他卻 僅僅一筆帶過。

另外還要著重提出的很重要的一點是,在DSL和API兩者間其實很難區分。在內部DSL的例子中,他們本質上幾乎是一樣的。在聯想到DSL這個詞匯 的時候,我們其實是在利用主編程語言在有限的范圍內創建易讀的API。“內部DSL”幾乎是一個特定領域內針對特定問題而創建的極具可讀性的API的代名 詞。

任何內部DSL都受它基礎語言的文法結構的限制。比如在使用Java的情況下,大括弧,小括弧和分號的使用是必須的,并且缺少閉包和元編程有可能會導致DSL比使用動態語言創建來的更冗長。

但從光明的一面來看,通過使用Java,我們同時能利用強大且成熟的類似于Eclipse和IntelliJ IDEA的集成開發環境,由于這些集成開發環境“自動完成(auto-complete)”、自動重構(auto-reconstruct)和debug等特性,使得DSL的創建、使用和維護 來的更加簡單。另外,Java5中的一些新特性(比如generic、varargs 和static imports)可以幫助我們創建比以往任何版本任何語言都簡潔的API。

一般來說,使用Java編寫的DSL不會造就一門業務用戶可以上手的語言,而會是一種業務用戶也會覺得易讀的語 言,同時,從程序員的角度,它也會是一種閱讀和編寫都很直接的語言。和外部DSL或由動態語言編寫的DSL相比有優勢,那就是編譯器可以增強糾錯能力并標 識不合適的使用,而Ruby或Pearl會“愉快接受”荒謬的input并在運行時失敗。這可以大大減少冗長的測試,并極大地提高應用程序的質量。然而, 以這樣的方式利用編譯器來提高質量是一門藝術,目前,很多程序員都在為盡力滿足編譯器而非利用它來創建一種使用語法來增強語義的語言。

利用Java來創建DSL有利有弊。最終,你的業務需求和你所工作的環境將決定這個選擇正確與否。

二、Camel DSL

Camel使用一種Java領域特定的語言(Domain Specific Language,DSL)來創建企業集成模式(Enterprise Integration Patterns)或路由。Camel同時支持一種基于Spring的 XML 配置,以及 Scala DSL。

??? 使用Java DSL的優點是你使用的IDE可以在你開始編寫時,智能的實例代碼,而不需要在大量的XML上浪費時間。Java DSL非常有表現能力,因為你可以在語言中混合搭配你自己的代碼,來進行表達式或斷言評估,或容易地添加自定義的處理模塊。

DSL的主要入口有

  • CamelContext 用于創建一個Camel 路由規則庫(routing rule base);
  • RouteBuilder 用于創建路由集合。

參考:

  • http://camel.apache.org/dsl.html
  • 說明: 這只是簡單的概念介紹,詳細的請參看 http://www.infoq.com/cn/articles/internal-dsls-java

?

轉載于:https://www.cnblogs.com/JoannaQ/p/3448814.html

總結

以上是生活随笔為你收集整理的Java DSL简介(收集整理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。