On 8/07/2022 7:43 pm, Rony G. Flatscher wrote:
On 08.07.2022 03:38, David Crayford wrote:
On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
When I select a language for a job, one of the things that I look at is the ecosystem. I prefer ooRexx to Perl, but I find myself using Perl for some tasks because CPAN is an awesome resource. Python may not be the best language for the task at hand, but it pays to check what packages are available.

Indeed Perl and Python have a great wealth of libraries available to them.

There is one ecosystem that beats Perl, Python and practically any others: Java

According to http://www.modulecounts.com/ which shows the number of unique packages

Methodology: "... Data is collected /by scraping the relevant websites /once a day via a cron job and then stored in a Postgresql database for later retrieval. Growth rates are calculated by averaging data over the last week. I'm gathering counts of separate modules, so multiple versions of the same module/package/gem only count once (foo-1.2, foo-1.3 and bar-1.0 would count as 2 total).  ..."

Questioning the methodology, completeness, correctness and as a result the relevance. Did not find any checkbox for Java there hence wondering where your Java figures come from.

It gets the Java figures from Maven Central https://search.maven.org/stats. There is no denying that Java has an gigantic eco-system. And a hell of a lot of it is top notch. The product I'm currently working on wouldn't exist without Java open source.



Node.js   2019534
Java           483102
Python      386118
Perl              18354

So the undisputed winner as far as ecosystem is JavaScript.

This may be more an indication that there are many shortcomings and many packages by different authors that try to make the same needed functionalities available.

... cut ...

Ad Java: JRE comes already with a wealth of packages on board that are add-ons in other languages.

The gripe I have is that what comes with the JRE is typically not as good as open source. For example, JDK 11 finally included a half decent HttpClient but it doesn't support anyway near the feature set of open source clients such as OkHttp or Jetty https://www.mocklab.io/blog/which-java-http-client-should-i-use-in-2020/. To my knowledge there is still no support for JSON or Yaml even in JDK 18.



In addition, almost all important business applications have Java APIs such that one can regard such applications as additional Java packages (e.g. OpenOffice/LibreOffice mainly implemented in C++ gained Java APIs and the ability to implement modules in Java; one result is the creation of a Java scripting framework for OpenOffice/LibreOffice which allows any language for which a javax.script implementation exists to be used as a scripting and macro language; one example for this comes with BSF4ooRexx).

Or think of the JDBC packages of the different database vendors, or ...

I just downloaded vsam.js to process a VSAM data set in Node on z/OS and it works well. IBM are certainly giving
Node more love then REXX which will never officially support VSAM.

Indeed this is strange that IBM does not support REXX the same as other technologies.

IBM also provide a VSAM I/O module for Go https://github.com/ibmruntimes/go-recordio.



Has that possibly to do (wild guess) that the developers do not know how to create REXX APIs on the mainframe? As probably C++ has a role here, then probably CMake based ooRexx 5 with its C++ APIs would make the creation of external ooRexx function libraries quite simple on the mainframe as well (judging from the existence of "z/OS XL C/C++ Library Reference SA22-7821" and "z/OS XL C/C++ Programming Guide SC09-4765").

The REXX programming services on z/OS are built for assembler. Bridging to C/C++ can be done. I have code to do that but it's tricky. Porting ooRexx to z/OS is very difficult. I actually managed to build it around 2008. If you look in the oorexx-devel archives you will se conversations between myself and Rick McGuire. There is a lot of weird pthread stuff intertwined with message passing that made it unsuitable for running in an ISPF environment. I put it in the too-hard basket and a a couple of years later discovered Lua which was simple to port and unbelievably effecient. Several orders of magnitude faster than TSO REXX.


But then, if ooRexx and BSF4ooRexx were there (and they are available in the Linux subsystem), then one can use ooRexx to exploit com.ibm.jzos.ZFile (there seem to be samples on the Internet that demonstrate using it <https://www.ibm.com/docs/en/sdk-java-technology/7?topic=SSYKE2_7.0.0/com.ibm.java.zsecurity.api.70.doc/com.ibm.jzos/com/ibm/jzos/sample/vsam/file/package-summary.html>).

The first requirement from users on this list would be to run ooRexx from TSO. The vast majority of z/OS folks don't know how to use a shell. I was speaking to one of our ported tools devs a couple of weeks ago and he told me that a lot of folks are invoke our Git port from TSO using bpxwunix() in REXX. This is a dangerously close to undefined behavior. Git needs to be run using Rockets bash for file encoding conversion to work predictably.



---rony


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to