溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ABAP Netweaver里的寄生式編程語言有哪些

發(fā)布時(shí)間:2021-12-29 17:31:12 來源:億速云 閱讀:150 作者:iii 欄目:編程語言

這篇文章主要講解了“ABAP Netweaver里的寄生式編程語言有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ABAP Netweaver里的寄生式編程語言有哪些”吧!

JavaScript

在Netweaver里隱藏了這樣一個(gè)包:SJAVASCRIPT,光看名字就知道它要干啥了。

Netweaver的C/C++內(nèi)核實(shí)現(xiàn)了一個(gè)微型的JavaScript引擎,其接口通過ABAP類CL_JAVA_SCRIPT暴露,可以讓ABAP開發(fā)人員在Netweaver里編寫和執(zhí)行JavaScript語言。

ABAP Netweaver里的寄生式編程語言有哪些

這個(gè)類于2000年2月創(chuàng)建,這個(gè)時(shí)間點(diǎn)Jerry還在讀高中,囧。

ABAP Netweaver里的寄生式編程語言有哪些

如果您想使用Netweaver里這個(gè)JavaScript引擎操練操練ECMAScript 6.0規(guī)范里定義的那些新特性,比如Class關(guān)鍵字,異步操作和Async函數(shù)等,那Jerry覺得您應(yīng)該是想多了,因?yàn)檫@個(gè)類已經(jīng)明確標(biāo)注為obsolete,因此SAP不建議使用在生產(chǎn)代碼里,風(fēng)險(xiǎn)自擔(dān)。

當(dāng)然,執(zhí)行包里的報(bào)表SJSEU,把一些教科書上的JavaScript代碼粘貼進(jìn)去玩玩,是沒有任何問題的。比如下面這段用JavaScript遞歸實(shí)現(xiàn)的整數(shù)階乘代碼,

ABAP Netweaver里的寄生式編程語言有哪些

可以正常運(yùn)行在ABAP Netweaver里:

ABAP Netweaver里的寄生式編程語言有哪些

在Jerry看來,不存在必須在ABAP Netweaver里執(zhí)行JavaScript的場景。如果大家有基于JavaScript的應(yīng)用需要和Netweaver里的ABAP應(yīng)用集成,SAP推薦的做法是把這些JavaScript應(yīng)用部署在SAP Cloud Platform上。

Ruby

把品質(zhì)各異的紅寶石鑲嵌到頭盔,鎧甲,武器和盾牌上,能獲得下表里定義的各種屬性加成。

ABAP Netweaver里的寄生式編程語言有哪些

SAP Cloud for Customer的開發(fā)人員,想必在UI designer里都編寫過Ruby代碼:

ABAP Netweaver里的寄生式編程語言有哪些

帶著這個(gè)好奇心,我打開包含了這段Ruby代碼的UI視圖,發(fā)現(xiàn)在編寫完畢Ruby代碼后,保存激活時(shí),Netweaver后臺會(huì)自動(dòng)把這些Ruby代碼轉(zhuǎn)換成對應(yīng)的JavaScript代碼,最后瀏覽器執(zhí)行的當(dāng)然就是后者,即轉(zhuǎn)換后的JavaScript代碼。

ABAP Netweaver里的寄生式編程語言有哪些

也就是說,SAP Cloud for Customer的Netweaver系統(tǒng)里,存在一個(gè)微型的Ruby解析器。

因?yàn)镃4C后臺沒有對客戶和Partners開發(fā),因此我無法像CL_JAVA_SCRIPT那樣,貼出這個(gè)Ruby解析器的ABAP實(shí)現(xiàn)類的名稱和代碼,不過其原理和CL_JAVA_SCRIPT一樣,都是使用ABAP的關(guān)鍵字SYSTEM-CALL,調(diào)用ABAP內(nèi)核的Ruby接口。

ABSL - ABAP Script Language

Netweaver里的ABSL和前面介紹的兩種精簡版語言引擎JavaScript和Ruby有所區(qū)別——ABSL是一門DSL-Domain Specific Language(領(lǐng)域特定語言).

ABAP Netweaver里的寄生式編程語言有哪些

Wikipedia對領(lǐng)域特定語言的定義是“為了解決某一類任務(wù)而專門設(shè)計(jì)的計(jì)算機(jī)語言”,Martin Fowler則認(rèn)為,
“DSL通過在表達(dá)能力上做的妥協(xié)換取在某一領(lǐng)域內(nèi)的高效”。

而ABSL,則是SAP為了確保C4C partners能夠高效安全地在多租戶云上開發(fā)自定義邏輯而設(shè)計(jì)出的一門寄生于ABAP Netweaver的領(lǐng)域特定語言。

我們在Cloud Application Studio里編寫完ABSL,保存激活后,ABAP Netweaver后臺就會(huì)自動(dòng)生成對應(yīng)的ABAP代碼。同之前介紹的JavaScript和Ruby一樣,在C4C的ABAP Netweaver后臺,存在一個(gè)針對ABSL的語言解析器和編譯器來完成ABS對應(yīng)的ABAP代碼的生成。

ABAP Netweaver里的寄生式編程語言有哪些

C4C的運(yùn)行時(shí),執(zhí)行的就是轉(zhuǎn)換后生成的ABAP代碼。

Jerry 2011年還在SAP BYD部門工作時(shí),也曾經(jīng)參與過基于ABSL生成對應(yīng)的ABAP代碼的開發(fā)工作,當(dāng)時(shí)我所在的團(tuán)隊(duì)負(fù)責(zé)的任務(wù)是把Cloud Application Studio里編寫的Application Exit ABSL代碼,轉(zhuǎn)換成ABAP Netweaver里的BAdI模型和對應(yīng)的ABAP代碼。

最后再來說說C/C++. 人類是異形的宿主,而C/C++則是ABAP的宿主。這一點(diǎn)在Jerry之前的文章  聊聊C語言和ABAP里已經(jīng)闡述清楚了。

我們可以在F1喚出的ABAP幫助文檔里根據(jù)關(guān)鍵字“Kernel"查找出ABAP kernel的相關(guān)信息:

ABAP Netweaver里的寄生式編程語言有哪些

在SAP內(nèi)部的Netweaver服務(wù)器上,我們是能夠查看這些C/C++的源代碼的,只是我不能將這些代碼貼出來:

ABAP Netweaver里的寄生式編程語言有哪些

感謝各位的閱讀,以上就是“ABAP Netweaver里的寄生式編程語言有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對ABAP Netweaver里的寄生式編程語言有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI