您好,登錄后才能下訂單哦!
這篇文章主要講解了“ABAP Netweaver里的寄生式編程語言有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ABAP Netweaver里的寄生式編程語言有哪些”吧!
在Netweaver里隱藏了這樣一個包:SJAVASCRIPT,光看名字就知道它要干啥了。
Netweaver的C/C++內核實現了一個微型的JavaScript引擎,其接口通過ABAP類CL_JAVA_SCRIPT暴露,可以讓ABAP開發人員在Netweaver里編寫和執行JavaScript語言。
這個類于2000年2月創建,這個時間點Jerry還在讀高中,囧。
如果您想使用Netweaver里這個JavaScript引擎操練操練ECMAScript 6.0規范里定義的那些新特性,比如Class關鍵字,異步操作和Async函數等,那Jerry覺得您應該是想多了,因為這個類已經明確標注為obsolete,因此SAP不建議使用在生產代碼里,風險自擔。
當然,執行包里的報表SJSEU,把一些教科書上的JavaScript代碼粘貼進去玩玩,是沒有任何問題的。比如下面這段用JavaScript遞歸實現的整數階乘代碼,
可以正常運行在ABAP Netweaver里:
在Jerry看來,不存在必須在ABAP Netweaver里執行JavaScript的場景。如果大家有基于JavaScript的應用需要和Netweaver里的ABAP應用集成,SAP推薦的做法是把這些JavaScript應用部署在SAP Cloud Platform上。
把品質各異的紅寶石鑲嵌到頭盔,鎧甲,武器和盾牌上,能獲得下表里定義的各種屬性加成。
SAP Cloud for Customer的開發人員,想必在UI designer里都編寫過Ruby代碼:
帶著這個好奇心,我打開包含了這段Ruby代碼的UI視圖,發現在編寫完畢Ruby代碼后,保存激活時,Netweaver后臺會自動把這些Ruby代碼轉換成對應的JavaScript代碼,最后瀏覽器執行的當然就是后者,即轉換后的JavaScript代碼。
也就是說,SAP Cloud for Customer的Netweaver系統里,存在一個微型的Ruby解析器。
因為C4C后臺沒有對客戶和Partners開發,因此我無法像CL_JAVA_SCRIPT那樣,貼出這個Ruby解析器的ABAP實現類的名稱和代碼,不過其原理和CL_JAVA_SCRIPT一樣,都是使用ABAP的關鍵字SYSTEM-CALL,調用ABAP內核的Ruby接口。
Netweaver里的ABSL和前面介紹的兩種精簡版語言引擎JavaScript和Ruby有所區別——ABSL是一門DSL-Domain Specific Language(領域特定語言).
Wikipedia對領域特定語言的定義是“為了解決某一類任務而專門設計的計算機語言”,Martin Fowler則認為,
“DSL通過在表達能力上做的妥協換取在某一領域內的高效”。
而ABSL,則是SAP為了確保C4C partners能夠高效安全地在多租戶云上開發自定義邏輯而設計出的一門寄生于ABAP Netweaver的領域特定語言。
我們在Cloud Application Studio里編寫完ABSL,保存激活后,ABAP Netweaver后臺就會自動生成對應的ABAP代碼。同之前介紹的JavaScript和Ruby一樣,在C4C的ABAP Netweaver后臺,存在一個針對ABSL的語言解析器和編譯器來完成ABS對應的ABAP代碼的生成。
C4C的運行時,執行的就是轉換后生成的ABAP代碼。
Jerry 2011年還在SAP BYD部門工作時,也曾經參與過基于ABSL生成對應的ABAP代碼的開發工作,當時我所在的團隊負責的任務是把Cloud Application Studio里編寫的Application Exit ABSL代碼,轉換成ABAP Netweaver里的BAdI模型和對應的ABAP代碼。
最后再來說說C/C++. 人類是異形的宿主,而C/C++則是ABAP的宿主。這一點在Jerry之前的文章 聊聊C語言和ABAP里已經闡述清楚了。
我們可以在F1喚出的ABAP幫助文檔里根據關鍵字“Kernel"查找出ABAP kernel的相關信息:
在SAP內部的Netweaver服務器上,我們是能夠查看這些C/C++的源代碼的,只是我不能將這些代碼貼出來:
感謝各位的閱讀,以上就是“ABAP Netweaver里的寄生式編程語言有哪些”的內容了,經過本文的學習后,相信大家對ABAP Netweaver里的寄生式編程語言有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。