New Features in BSF4ooRexx (Camouflaging Java as oorexx) http://sourceforge.net/projects/bsf4oorexx/files/



Similar documents
The 2014 Edition of BSF4ooRexx (for Windows, Linux, MacOSX)

How To Run A Test File Extension On A Rexx (Unix) On A Microsoft Linux (Amd64) (Orchestra) (For Windows) (

Implementing Rexx Handlers in NetRexx/Java/Rexx

D-Bus Language Bindings for oorexx

An Introduction to Procedural and Object-oriented Programming (Object Rexx) 3 "Automating Windows and Windows Applications"

dbusoorexx Bringing the Power of D-Bus to Your Fingertips

An Introduction to Procedural and Object-oriented Programming (Object Rexx) 8 "Automating Windows and Windows Applications"

An Introduction to Procedural and Object-oriented Programming (Object Rexx) 1 "Automating Windows and Windows Applications"

This presentation explains how to monitor memory consumption of DataStage processes during run time.

Java SE 8 Programming

Projektseminar aus Wirtschaftsinformatik

VoIP Infrastructure Upgrade Desktop. User Group March 2014

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Bypassing Memory Protections: The Future of Exploitation

Publish Acrolinx Terminology Changes via RSS

Client-Side Web Programming (Part 2) Robert M. Dondero, Ph.D. Princeton University

To install Multifront you need to have familiarity with Internet Information Services (IIS), Microsoft.NET Framework and SQL Server 2008.

With a single download, the ADT Bundle includes everything you need to begin developing apps:

Installation Instructions for SAP GUI for Java 7.2

Practice Fusion API Client Installation Guide for Windows

Symantec Client Firewall Policy Migration Guide

Lab 0 (Setting up your Development Environment) Week 1

Manual Rabo Corporate Connect Rabo Cash Management. Installation Manual

Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0

Installation and Administration Guide

SMock A Test Platform for the Evaluation of Monitoring Tools

Tutorial: Load Testing with CLIF

Crash Course in Java

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Building Java Servlets with Oracle JDeveloper

SkyRecon Cryptographic Module (SCM)

Using Process Monitor

BIRT Application and BIRT Report Deployment Functional Specification

OPTIMIZING YOUR PI SDK APPLICATIONS BUILDERS' CAFÉ WEBINAR SERIES

1) SETUP ANDROID STUDIO

RIC 2007 SNAP: Symbolic Nuclear Analysis Package. Chester Gingrich USNRC/RES 3/13/07

Java - gently. Originaux. Prérequis. Objectifs

Java. How to install the Java Runtime Environment (JRE)

PoSHServer Documentation AUTHOR: YUSUF OZTURK (MVP)

Chapter 12 Programming Concepts and Languages

IBrokers - Interactive Brokers and R

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

OmniTouch 8400 Instant Communications Suite. My Instant Communicator Desktop User guide. Release 6.7

SciTools Understand Flavor for Structure 101g

Microsoft Windows PowerShell v2 For Administrators

IBM WebSphere Server Administration

WebSphere Server Administration Course

Omgeo Central Trade Manager SM

PEtALS Quick Start. PEtALS Team Roland NAUDIN - February

Web Services with ASP.NET. Asst. Prof. Dr. Kanda Saikaew Department of Computer Engineering Khon Kaen University

new Business Online Technical Troubleshooting Guide

What is My Teamwork? What s new in this release? MY TEAMWORK 5.0 QUICK START GUIDE

Capabilities of a Java Test Execution Framework by Erick Griffin

Go to CGTech Help Library. Installing CGTech Products

DI-804HV with Windows 2000/XP IPsec VPN Client Configuration Guide

How to Install Eclipse. Windows

Zend Server 4.0 Beta 2 Release Announcement What s new in Zend Server 4.0 Beta 2 Updates and Improvements Resolved Issues Installation Issues

Click Start > Control Panel > System icon to open System Properties dialog box. Click Advanced > Environment Variables.

RUnit - A Unit Test Framework for R

Investment Management System. Connectivity Guide. IMS Connectivity Guide Page 1 of 11

Towards Software Configuration Management for Test-Driven Development

Archive Attender Version 3.5

Windows Security. CSE497b - Spring 2007 Introduction Computer and Network Security Professor Jaeger.

Access to Front Office services

How To Install An Aneka Cloud On A Windows 7 Computer (For Free)

This walk-through was created using Windows XP as a guide, however alternate versions of the Windows OS will be very similar in procedure as well.

Microsoft Windows Installation and Troubleshooting Guide

Supplement I.B: Installing and Configuring JDK 1.6

Enabling Java and ActiveX Settings of Internet Explorer:

Accessing Restricted University Online Resources Using Network Connect. on the Secure Remote Access Service

BPM Scheduling with Job Scheduler

System Planning, Deployment, and Best Practices Guide

Como configurar o IIS Server para ACTi NVR Enterprise

E-Notebook SQL 12.0 Desktop Database Migration and Upgrade Guide. E-Notebook SQL 12.0 Desktop Database Migration and Upgrade Guide

Office 2010 OPK Q&A System Builders

Entrust Managed Services PKI Administrator s Quick Start Guide

Real-time Java Processor for Monitoring and Test

AdminStudio Release Notes. 16 July Introduction New Features... 6

IBM BPM V8.5 Standard Consistent Document Managment

Configuring Firewalls An XML-based Approach to Modelling and Implementing Firewall Configurations

Table of Contents. Oracle/Sun JRE Upgrade Instructions. Verify Hard Disk Space JRE

kalmstrom.com Business Solutions

GUI Test Automation How-To Tips

SecureVault Online Backup Service FAQ

Chapter 13: Program Development and Programming Languages

System requirements for MuseumPlus and emuseumplus

How to install and use the File Sharing Outlook Plugin

TECHNICAL CONDITIONS REGARDING ACCESS TO VP.ONLINE. User guide. vp.online

Middleware Release Notes

How to analyse your system to optimise performance and throughput in IIBv9

OpenMI 'in a nutshell'

Integration Knowledge Kit Developer Journal

Waspmote IDE. User Guide

MatrixSSL Developer s Guide

Recommended operating systems and software for end user services. Operating systems and software not supported for end user services

Transcription:

Institut für Betriebswirtschaftslehre und Wirtschaftsinformatik New Features in BSF4ooRexx (Camouflaging Java as oorexx) http://sourceforge.net/projects/bsf4oorexx/files/ The 2015 International Rexx Symposium Rony G. Flatscher Wirtschaftsuniversität Wien Welthandelsplatz 1 A-1020 Wien Hier The 2015 Vortrags-/Vorlesungstitel Automatisierung International von Rexx Windows Symposium, im Master Anwendungen eintragen Vienna, Austria (3) 1 Prof. Dr. Rony G. Flatscher

Agenda Purpose of BSF4ooRexx Changes to BSF4ooRexx since Aruba-Symposium Roundup and outlook Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 2 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Purpose of BSF4ooRexx, 1 Java Available on practically all computers Java's runtime environment (JRE) A huge class library, available for all operating systems Java classes (and programs) run everywhere, even GUIs! Practically every relevant software problem/challenge solved Constantly updated to the latest technologies Used for Java applets running in web browsers Used for stand-alone, fully fledged professional applications Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 3 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Purpose of BSF4ooRexx, 2 BSF4ooRexx Make all of Java (classes and the runtime) available to oorexx Instead of Assembler or C(++) external function libraries for special needs, all of Java is made available as a huge external function (and class) library! One size fits all ;-) No need anymore to create separate external function libraries for specific functionality one is seeking! Make it easy for oorexx programmers to take advantage Camouflage all of Java as oorexx! Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 4 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Purpose of BSF4ooRexx, 3 BSF4ooRexx oorexx code can be even used instead of Java code! Interface methods Often used for callback functionality, e.g. in Java GUI classes Abstract methods Java/NetRexx code can control invocation of Rexx scripts Allows oorexx to be used as a macro language for Java apps! Can create and use arbitrary many oorexx interpreter instances Can interact with individual oorexx objects Send oo-rexx messages with or without arguments Fetch return values from oorexx scripts Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 5 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Purpose of BSF4ooRexx, 4 An Example dim=.bsf~new("java.awt.dimension", 100, 200) say dim~tostring ::requires BSF.CLS -- get Java support Output: java.awt.dimension[width=100,height=200] Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 6 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 1 Installation Improve Windows installer Windows XP runas does not work in latest versions of Windows Use elevation introduced with Vista Improve MacOSX installer Supply oorexx 4.2.0 with BSF4ooRexx Circumvent a bug in AOO 4.0.x (PATH not set) Do not preload awt-related classes as AOO 4.0.x and 4.1.x cannot dispatch internal oorexx macros under certain cirumstances Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 7 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 2 New oorexxtry.rxj Enhances existing oorexxtry.rxj Undockable windows More configuration features Distinguishes between regular and trace output Bachelor paper by Gerald Leitner, finalized in February 2015 Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 8 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 3 Auto-attach to appropriate Java environment Previously: oorexx multithreading Save thread ID that can interact with Java Each oorexx thread needs to use BSFAttachToTID(tid) oorexx programmer must somehow communicate the tid to use in new oorexx threads Each oorexx thread should then use BSFDetach() Cumbersome, hence also error-prone Now: BSF4ooRexx will automatically attach and detach Implementation will be simplified, possibly speed improved Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 9 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 4 Multithreading Example 1a jo=.test~new say "main: tid=" BSFGetTID() "worker, tid="tid jo~worker sleeptime=1.5 say "main: tid=" BSFGetTID() "about to sleep" sleeptime" secs" call syssleep sleeptime say "main: tid=" BSFGetTID() "finish. <--" ::requires BSF.CLS -- use all of Java as a huge external oorexx library! ::class test ::method worker -- use oorexx multithreading tid=bsfgettid() -- save current (main) TID jo=.bsf~new("java.awt.dimension", 123, 456) reply -- return to caller call BSFAttachToTID tid -- connect to main TID do i=1 to 3 call syssleep random(0,100)/100 say "worker: tid=" BSFGetTID()", jo~tostring:" jo~tostring end call BSFDetach -- detach from TID Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 10 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 4 Multithreading Example 1b Output: E:\201504-RexxLA\>attach02.rex main: tid=5608 worker, tid=tid main: tid=5608 about to sleep 1.5 secs worker: tid=4596, jo~tostring: java.awt.dimension[width=123,height=456] worker: tid=4596, jo~tostring: java.awt.dimension[width=123,height=456] main: tid=5608 finish. <-- worker: tid=4596, jo~tostring: java.awt.dimension[width=123,height=456] Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 11 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 4 Multithreading Example 1c jo=.test~new say "main: tid=" BSFGetTID() "worker, tid="tid jo~worker sleeptime=1.5 say "main: tid=" BSFGetTID() "about to sleep" sleeptime" secs" call syssleep sleeptime say "main: tid=" BSFGetTID() "finish. <--" ::requires BSF.CLS ::class test ::method worker -- use all of Java as a huge external oorexx library! -- use oorexx multithreading jo=.bsf~new("java.awt.dimension", 123, 456) reply -- return to caller do i=1 to 3 call syssleep random(0,100)/100 say "worker: tid=" BSFGetTID()", jo~tostring:" jo~tostring end Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 12 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 5 Method resolution Change resolving Java methods Allows default interface methods in Java 8 to become accessible Java interface classes have not methods by definition Starting with Java 8 a default interface method can be defined Important for lambda support Java package java.util.function.* oorexx can be used to implement any of the Java lambda functions! Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 13 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 6 Lambda Example 1a (demo-j8-lambda.rex) #!/usr/bin/rexx wordstring="just a bunch of words to test for killer items containing a k" -- turn Rexx-string into a Java-string: this allows us to use Java's String methods refwordstring=.bsf~new("java.lang.string", wordstring) -- convert the string into a Java List (a Collection): alist=bsf.loadclass("java.util.arrays")~aslist(refwordstring~split(" ")) -- create a RexxProxy of our Worker class which implements the two functional interface rexxworker=bsfcreaterexxproxy(.worker~new,,"java.util.function.predicate", - "java.util.function.consumer" ) say "This predicate filter just selects words containing the letter 'k':" sa=alist~stream~filter(rexxworker)~toarray -- "filter" employs the Predicate interface loop w over sa -- print the results for verification: say '['w']' end say "-"~copies(30) alist~stream~foreach(rexxworker) -- "foreach" employs the Consumer interface ::requires BSF.CLS -- get Java-support ::class Worker -- implements the interface java.util.function.predicate ::method test -- will return.true (1) for strings containing 'k',.false (0) else use arg s return s~caselesspos('k')>0 -- implements the interface java.util.function.consumer ::method accept -- just shows each word use arg s say "["s"]" Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 14 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Changes and New Features, 6 Lambda Example 1b Output: E:\201504-RexxLA\>rexx demo-j8-lambda.rex This predicate filter just selects words containing the letter 'k': [killer] [k] ------------------------------ [Just] [a] [bunch] [of] [words] [to] [test] [for] [killer] [items] [containing] [a] [k] Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 15 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher

Roundup and Outlook Roundup Improved installation for Windows and MacOSX New oorexxtry.rxj New auto-attach feature Improved Java method resolution Outlook Start work on JSR-223 interface for BSF4ooRexx 64-bit Windows Make sure that 32-bit Java support gets installed correctly Hier The 2015 Vortrags-/Vorlesungstitel International Rexx Symposium, im Master eintragen Vienna, Austria 16 Hier Name des Vortragenden im Rony Master G. eintragen Flatscher