这篇文章主要讲解了“ABAP Netweaver里的寄生式编程语言有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ABAP Netweaver里的寄生式编程语言有哪些”吧!
JavaScript
在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上。
Ruby
把品质各异的红宝石镶嵌到头盔,铠甲,武器和盾牌上,能获得下表里定义的各种属性加成。
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接口。
ABSL - ABAP Script Language
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里的寄生式编程语言有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!