Design and Implementation of a Behaviorally Typed Programming System for Web Services

Total Page:16

File Type:pdf, Size:1020Kb

Design and Implementation of a Behaviorally Typed Programming System for Web Services Universidade Nova de Lisboa Faculdade de Cienciasˆ e Tecnologia Departamento de Informatica´ Dissertac¸ao˜ de Mestrado Mestrado em Engenharia Informatica´ Design and Implementation of a Behaviorally Typed Programming System for Web Services Filipe David Oliveira Militao˜ (26948) Lisboa (2008) Universidade Nova de Lisboa Faculdade de Cienciasˆ e Tecnologia Departamento de Informatica´ Dissertac¸ao˜ de Mestrado Design and Implementation of a Behaviorally Typed Programming System for Web Services Filipe David Oliveira Militao˜ (26948) Orientador: Prof. Doutor Lu´ıs Caires J ´uri Presidente: • Doutor Jos´eAlberto Cardoso e Cunha, Professor Catedratico,´ Departamento de Informatica´ da Faculdade de Cienciasˆ e Tecnologia, Universidade Nova de Lisboa. Vogais: • Doutor Francisco Martins, Professor Auxiliar, Departamento de Informatica´ da Faculdade de Ciencias,ˆ Universidade de Lisboa. • Doutor Lu´ısManuel Marques da Costa Caires, Professor Associado, Departa- mento de Informatica´ da Faculdade de Cienciasˆ e Tecnologia, Universidade Nova de Lisboa. Disserta¸c˜aoapresentada na Faculdade de Ciˆenciase Tecnologia da Uni- versidade Nova de Lisboa para a obten¸c˜aodo Grau de Mestre em En- genharia Inform´atica. Lisboa (2008) Acknowledgements This work was partially supported by a CITI/PLM/1001/2007 research grant. v Summary The growing use of the Internet as a global infrastructure for communication between dis- tributed applications is leading to the development of a considerable amount of technologies to ease the deployment, description and data exchange among services and thus improve their in- teroperability. There is also a growing interest in the use of the “software as a service” business model where a software vendor develops and hosts applications to be used by its clients over the Internet. The use of these Web Services is provided through an API describing the inter- face of the service that can hide how the service provider hosts the application. This approach allows for the creation of an abstraction layer that offers additional capabilities without increas- ing the maintenance cost usually linked to the management of those machines (like software and hardware updates or just application/system configuration). However, the main tools provided by the standards and existing technology to combine these services usually only account for limited automatic verification techniques (based on standard signature checking of methods in interface descriptions) and thus relying the behav- ioral compatibility among services to the programmer. The programmer then becomes depen- dent on the quality of the documentation and the development time available to manually (and without formal guarantees) assure the correctness of the code. In this thesis, we propose a behavioral type system, in the context of yak, a prototype script- ing language for web services, that enhances traditional typecheckers by allowing to statically check the correct usage of services (as remote or local objects). Our language uses behavioral annotations in the protocol descriptions, similar to regular expressions, that are translated to deterministic finite automatons during the typechecking phase. The intent of this work is to ease the creation and deployment of Web Services by providing a friendly integration of be- havioral type concepts within a practical programming language, so to make the use of these services (with behavioral descriptions) transparent and effortless to the programmer. We also provide a full implementation of the interpreter, behavioral typechecker and run-time support system for the yak language, that may be used to develop prototypical systems and experiment with web services and behavioral types. Keywords: Web Services, Behavioral Typechecking, Resource Usage Analysis, Type System, Type Inference, Scripting Language. vii Sum´ario A crescente utilizac¸ao˜ da Internet como meio de comunicac¸ao˜ entre aplicac¸oes˜ levou ao de- senvolvimento de tecnologias para a disponibilizac¸ao,˜ descric¸ao˜ e comunicac¸ao˜ entre servic¸os como consequenciaˆ da heterogeneidade do codigo´ e das maquinas´ envolvidas. Deste modo, ha´ tambem´ um grande interesse no fornecimento de “software como servic¸o” onde uma em- presa desenvolve e disponibiliza aplicac¸oes˜ ao seus clientes por intermedio´ da Internet. Os clientes dialogam com estes Web Services atraves´ de APIs que descrevem a interface do servic¸o e escondem o modo como este esta´ alojado nos servidores. Assim, permitem criar um n´ıvel de abstracc¸ao˜ relativamente ao fornecimento de capacidades diversas sem impor o custo de manutenc¸ao˜ normalmente associado a` sua gestao˜ (tal como por exemplo, manutenc¸ao˜ de hard- ware ou configurac¸ao˜ e actualizac¸ao˜ das aplicac¸oes).˜ Contudo, as principais ferramentas disponibilizadas pelas normas e tecnologias actual- mente existentes para a combinac¸ao˜ destes servic¸os apenas permitem uma verificac¸ao˜ au- tomatica´ limitada (baseada na comparac¸ao˜ das assinaturas dos metodos´ descritos nas inter- faces) e deste modo delegam a garantia de compatibilidade de comportamentos para o pro- gramador. Este fica entao˜ dependente da qualidade da documentac¸ao˜ e da disponibilidade de tempo necessario´ para garantir manualmente (e sem garantias formais) a adequac¸ao˜ da sua soluc¸ao.˜ Nesta tese propomos um sistema de tipos comportamental, no contexto de yak, um prototipo´ de uma linguagem de scripting para Web Services que complementa a verificac¸ao˜ de tipos tradicional ao garantir estaticamente a correcta utilizac¸ao˜ de servic¸os (tanto remotos como lo- cais). Esta linguagem permite a descric¸ao˜ do comportamento por intermedio´ de anotac¸oes˜ adi- cionais, sob uma forma semelhante a expressoes˜ regulares, que sao˜ traduzidas em automatos´ finitos deterministas para a verificac¸ao.˜ O objectivo deste trabalho e´ facilitar a disponibilizac¸ao˜ e criac¸ao˜ de Web Services (com informac¸ao˜ comportamental) atraves´ da incorporac¸ao˜ de mecan- ismos na propria´ linguagem que tornam estes elementos transparentes ao programador e de utilizac¸ao˜ imediata. Disponibilizamos ainda a implementac¸ao˜ completa do interpretador, sis- tema de tipos comportamental e sistema de execuc¸ao˜ para a linguagem yak, suficientes para o desenvolvimento de sistemas experimentais com Web Services e tipos comportamentais. Palavras-chave: Web Services, Tipificac¸ao˜ Comportamental, Analise´ de Utilizac¸ao˜ de Recursos, Sistema de Tipos, Inferenciaˆ de Tipos, Linguagem de Scripting. ix Contents 1 Introduction 1 1.1 Motivation.........................................1 1.2 Context and description.................................3 1.3 Related work........................................4 1.4 Proposed solution..................................... 11 1.5 Contributions....................................... 13 1.5.1 Design and formalization of a behavioral type system............ 13 1.5.2 Design of the programming language yak................... 14 1.5.3 Implementation of a proof-of-concept prototype............... 14 1.6 Document overview................................... 15 2 The Yak Language and Type System 17 2.1 The language: syntax and informal semantics..................... 17 2.2 SubTyping......................................... 21 2.2.1 Simulation..................................... 25 2.3 Type System........................................ 29 2.3.1 Basic constructions................................ 30 2.3.2 Control flow.................................... 32 2.3.3 Variables...................................... 36 2.3.4 Calls........................................ 38 2.3.5 Exceptions..................................... 41 2.3.6 Basic types..................................... 46 2.3.7 Class type..................................... 46 2.3.8 Class Consistency Check............................. 47 2.3.9 Containers..................................... 50 2.4 Remarks.......................................... 51 3 Examples 53 3.1 Files............................................. 54 3.2 Machines.......................................... 56 3.3 Purchase.......................................... 58 xi CONTENTS 4 The Prototype 61 4.1 Technologies........................................ 62 4.2 Main changes to the formalization........................... 63 4.3 Implementation of the Typechecker........................... 64 4.3.1 Basic mechanisms................................ 64 4.3.2 Program Constructions............................. 75 4.3.3 Checking class consistency........................... 90 4.4 Implementation of the Interpreter............................ 98 4.5 Principles of the distribution mechanism....................... 99 4.6 Remarks.......................................... 101 5 Conclusions 103 5.1 Future work........................................ 104 A Complete Grammar 111 B Behavioral Protocols 115 C Quick User Guide 117 C.1 How to compile...................................... 117 C.2 How to run......................................... 117 C.3 Values............................................ 118 C.3.1 Object....................................... 118 C.3.2 Integer....................................... 118 C.3.3 Double....................................... 119 C.3.4 Boolean...................................... 120 C.3.5 String........................................ 120 C.3.6 XML........................................ 121 C.3.7 Default library.................................. 122 C.3.8 Maps........................................ 122 C.3.9 Queues......................................
Recommended publications
  • This Article Appeared in a Journal Published by Elsevier. the Attached Copy Is Furnished to the Author for Internal Non-Commerci
    This article appeared in a journal published by Elsevier. The attached copy is furnished to the author for internal non-commercial research and education use, including for instruction at the authors institution and sharing with colleagues. Other uses, including reproduction and distribution, or selling or licensing copies, or posting to personal, institutional or third party websites are prohibited. In most cases authors are permitted to post their version of the article (e.g. in Word or Tex form) to their personal website or institutional repository. Authors requiring further information regarding Elsevier’s archiving and manuscript policies are encouraged to visit: http://www.elsevier.com/copyright Author's personal copy Computer Languages, Systems & Structures 37 (2011) 132–150 Contents lists available at ScienceDirect Computer Languages, Systems & Structures journal homepage: www.elsevier.com/locate/cl Reconciling method overloading and dynamically typed scripting languages Alexandre Bergel à Pleiad Group, Computer Science Department (DCC), University of Chile, Santiago, Chile article info abstract Article history: The Java virtual machine (JVM) has been adopted as the executing platform by a large Received 13 July 2010 number of dynamically typed programming languages. For example, Scheme, Ruby, Received in revised form Javascript, Lisp, and Basic have been successfully implemented on the JVM and each is 28 February 2011 supported by a large community. Interoperability with Java is one important require- Accepted 15 March 2011 ment shared by all these languages. We claim that the lack of type annotation in interpreted dynamic languages makes Keywords: this interoperability either flawed or incomplete in the presence of method overloading. Multi-language system We studied 17 popular dynamically typed languages for JVM and .Net, none of them Interoperability were able to properly handle the complexity of method overloading.
    [Show full text]
  • Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell
    JAVA PROGRAMMING LANGUAGE FAMILY GODIVA SCALA PROCESSING ASPECTJ GROOVY JAVAFX SCRIPT EINSTEIN J SHARP JUDOSCRIPT JASMIN BEANSHELL PDF-33JPLFGSPAGJSEJSJJB16 | Page: 133 File Size 5,909 KB | 10 Oct, 2020 PDF File: Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script 1/3 Einstein J Sharp Judoscript Jasmin Beanshell - PDF-33JPLFGSPAGJSEJSJJB16 TABLE OF CONTENT Introduction Brief Description Main Topic Technical Note Appendix Glossary PDF File: Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script 2/3 Einstein J Sharp Judoscript Jasmin Beanshell - PDF-33JPLFGSPAGJSEJSJJB16 Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell e-Book Name : Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell - Read Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell PDF on your Android, iPhone, iPad or PC directly, the following PDF file is submitted in 10 Oct, 2020, Ebook ID PDF-33JPLFGSPAGJSEJSJJB16. Download full version PDF for Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell using the link below: Download: JAVA PROGRAMMING LANGUAGE FAMILY GODIVA SCALA PROCESSING ASPECTJ GROOVY JAVAFX SCRIPT EINSTEIN J SHARP JUDOSCRIPT JASMIN BEANSHELL PDF The writers of Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell have made all reasonable attempts to offer latest and precise information and facts for the readers of this publication. The creators will not be held accountable for any unintentional flaws or omissions that may be found.
    [Show full text]
  • Red5 Documentation Daniel Rossi Red5 Documentation Daniel Rossi Copyright © 2007 Daniel Rossi
    Red5 Documentation Daniel Rossi Red5 Documentation Daniel Rossi Copyright © 2007 Daniel Rossi Abstract Table of Contents .................................................................................................................................. 1 .................................................................................................................................. 2 Frequently Asked Questions ................................................................................... 2 Project Management ...................................................................................... 6 Server Side Development ............................................................................... 6 Codecs/Media integration ............................................................................... 7 Client Side/API Testing ................................................................................. 7 Branding/Logo/Website .................................................................................. 7 Documentation ............................................................................................. 7 .................................................................................................................................. 9 How to build with eclipse ...................................................................................... 9 ................................................................................................................................ 10 ...............................................................................................................................
    [Show full text]
  • Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM
    Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM Apache Ant User Manual Guide Version 1.6.0 Compiled by: Abdul Habra (www.tek271.com) From: http://ant.apache.org/ 12/2003 Copyright © 2000-2003 Apache Software Foundation. All rights Reserved. 1 of 130 Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM 2 of 130 Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM Contents At A Glance 1 Apache Ant User Manual Authors ............................................................................................................9 2 Feedback and Troubleshooting .............................................................................................................10 3 Introduction.........................................................................................................................................11 4 Installing Ant .......................................................................................................................................12 5 Running Ant ........................................................................................................................................18 6 Using Ant ............................................................................................................................................23 7 Concepts .............................................................................................................................................30 8 Listeners & Loggers..............................................................................................................................86
    [Show full text]
  • Accessing Application Context Listing
    19_1936_index.qxd 7/11/07 12:14 AM Page 503 INDEX A Ant BSF Support Example Accessing Application Context listing listing (7.12), 314 (10.2), 463 Ant task, Groovy, 132-133 Active File Example listing (8.20), 376 Ant Task That Compiles All Scripts Inside Active File Generator listing (8.22), 380 the Project listing (8.10), 357 active file pattern, 375 AntBuilder Example listing (7.14), 317 consequences, 375 any( ) method, Groovy, 175-177 problem, 375 any( ) Method listing (4.30), 175 sample code, 376-380 Apache Web servers, 62 solution, 375 BSF (Bean Scripting Framework), 94 Active File Template listing (8.21), 379 APIs (application programming ADD keyword, 5 interfaces), 49 addClassPath( ) method, 324 Java, 80-82 administration append( ) method, Groovy, 181-182 scripting, 328-334 append( ) Method listing (4.39), 182 scripting languages, 55-58 application scope, Web environments, 449 Administration Script Example application variable (Groovlet), 215 listing (7.17), 329 applications Advanced Ant BSF Support Example BSF (Bean Scripting Framework), 275 listing (7.13), 315 JSP (JavaServer Pages), 275-280 Advanced AntBuilder Example Xalan-J (XSLT), 280-287 listing (7.15), 320 Java, 79 Advanced Binding Example—Java web applications, 59, 61-67 Application listing (9.13), 408 ASP (Active Server Pages), 64 Advanced Groovy Programming Example games, 68-69 listing (5.22), 225 JavaScript, 65-67 AJAX (Asynchronous JavaScript And Perl, 61-62 XML), 66 PHP, 62-64 Ant build tools, 309-322 UNIX, 68 19_1936_index.qxd 7/11/07 12:14 AM Page 504 504 INDEX apply(
    [Show full text]
  • Apache Ant User Manual
    Table of Contents Introduction Installing Ant Using Ant Running Ant Apache Ant 1.8.1 Manual Ant Tasks Concepts and Types This is the manual for version 1.8.1 of Apache Ant. If your version of Ant (as verified Loggers & Listeners with ant -version) is older or newer than this version then this is not the correct Editor/IDE Integration manual set. Please use the documentation appropriate to your current version. Also, if Developing with Ant you are using a version older than the most recent release, we recommend an upgrade Tutorials to fix bugs as well as provide new functionality. Ant API License Feedback and Troubleshooting Authors Introduction Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles. Why? Why another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. Make-like tools are inherently shell-based: they evaluate a set of dependencies, then execute commands not unlike what you would issue on a shell. This means that you can easily extend these tools by using or writing any program for the OS that you are working on; however, this also means that you limit yourself to the OS, or at least the OS type, such as Unix, that you are working on. Makefiles are inherently evil as well. Anybody who has worked on them for any time has run into the dreaded tab problem.
    [Show full text]
  • Version : 2009K Vendor: Centos Release : 1.El5 Build Date
    Name : tzdata Relocations: (not relocatable) Version : 2009k Vendor: CentOS Release : 1.el5 Build Date: Mon 17 Aug 2009 06:43:09 PM EDT Install Date: Mon 19 Dec 2011 12:32:58 PM EST Build Host: builder16.centos.org Group : System Environment/Base Source RPM: tzdata-2009k- 1.el5.src.rpm Size : 1855860 License: GPL Signature : DSA/SHA1, Mon 17 Aug 2009 06:48:07 PM EDT, Key ID a8a447dce8562897 Summary : Timezone data Description : This package contains data files with rules for various timezones around the world. Name : nash Relocations: (not relocatable) Version : 5.1.19.6 Vendor: CentOS Release : 54 Build Date: Thu 03 Sep 2009 07:58:31 PM EDT Install Date: Mon 19 Dec 2011 12:33:05 PM EST Build Host: builder16.centos.org Group : System Environment/Base Source RPM: mkinitrd-5.1.19.6- 54.src.rpm Size : 2400549 License: GPL Signature : DSA/SHA1, Sat 19 Sep 2009 11:53:57 PM EDT, Key ID a8a447dce8562897 Summary : nash shell Description : nash shell used by initrd Name : kudzu-devel Relocations: (not relocatable) Version : 1.2.57.1.21 Vendor: CentOS Release : 1.el5.centos Build Date: Thu 22 Jan 2009 05:36:39 AM EST Install Date: Mon 19 Dec 2011 12:33:06 PM EST Build Host: builder10.centos.org Group : Development/Libraries Source RPM: kudzu-1.2.57.1.21- 1.el5.centos.src.rpm Size : 268256 License: GPL Signature : DSA/SHA1, Sun 08 Mar 2009 09:46:41 PM EDT, Key ID a8a447dce8562897 URL : http://fedora.redhat.com/projects/additional-projects/kudzu/ Summary : Development files needed for hardware probing using kudzu.
    [Show full text]
  • Scripting in Java by Dojan Bosanac.Pdf
    Scripting in Java™ Languages, Frameworks, and Patterns This page intentionally left blank Scripting in Java™ Languages, Frameworks, and Patterns Dejan Bosanac Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Cape Town • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products EDITOR-IN-CHIEF are claimed as trademarks. Where those designations appear in this book, and the pub- Mark Taub lisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. ACQUISITIONS The author and publisher have taken care in the preparation of this book, but make no EDITOR expressed or implied warranty of any kind and assume no responsibility for errors or Greg Doench omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. DEVELOPMENT EDITOR The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers Audrey Doyle and content particular to your business, training goals, marketing focus, and branding MANAGING EDITOR interests. For more information, please contact: Gina Kanouse U.S. Corporate and Government Sales (800) 382-3419 PROJECT EDITOR [email protected] Anne Goebel For sales outside the United States, please contact: COPY EDITOR International Sales [email protected] Geneil Breeze INDEXER Brad Herriman PROOFREADER Water Crest Publishing, Inc. PUBLISHING COORDINATOR Michelle Housley COVER DESIGNER Chuti Prasertsith COMPOSITION Bumpy Design Visit us on the Web: www.awprofessional.com Library of Congress Cataloging-in-Publication Data Bosanac, Dejan.
    [Show full text]
  • Les Outils De Développement Pour Java Didier Donsez
    http://membres-liglab.imag.fr/donsez/cours Les Outils de Développement pour Java Didier Donsez Université Joseph Fourier - Grenoble 1 PolyTech’ Grenoble - LIG / ADELE [email protected] [email protected] 31/12/2009 Licence Cette présentation est couverte par le contrat Creative Commons By NC ND http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ 009 Didier Donsez, Outils deDonsez,Outils Java,développement Didier 1997-2 2 31/12/2009 Objectifs Documentation Organiser Deboggage Observer 009 Précompilateur Retro-Compilation Ofuscateur Analyseur de Performance Test de Compatibilité Didier Donsez, Outils deDonsez,Outils Java,développement Didier 1997-2 3 31/12/2009 Documentation Javadoc (JDK) Génération automatique de la documentation HTML à partir des commentaires présents dans les .java Commentaires et Tags /** * This is a <b>doc</b> comment. * @see java.lang.Object Tags non * @todo fix {@underline this !} standards 009 */ Documentation Standard (HTML avec/sans frame) hiérarchie des classes et des interfaces, liste des packages résumé et détail d ’une classe, interface, méthode, propriété,… Documentation Customisée (RTF, XML, MIF, HTML, …) Doclet : classe Java chargée par Javadoc pour personnaliser le résultat de la génération de la documentation Taglet : classe Java personnalisant la sortie HTML lié à un tag (bloc ou inline) Remarque Didier Donsez, Outils deDonsez,Outils Java,développement Didier 1997-2 N ’oubliez pas d’ajouter la génération au Makefile/Build/POM file 4 31/12/2009 Normes de programmation (i) Facilite la lecture des sources (lecture croisée) Normes SUN, autres extensions (template) public int MyMethod (……) throws … { /** int attribute=…. * Description of the method 009 for (int i = 0; i < attribute; i++) * @param What is it ? { * @return What the function return …} */ if (……) { public int myMethod (……) throws … { throw new Exception intint attribute=….
    [Show full text]
  • Tag Libraries As Fifth Generation Languages Mark Cyzyk*
    The Open Information Systems Journal, 2008, 2, 11-16 11 Tag Libraries as Fifth Generation Languages Mark Cyzyk* Scholarly Communication Architect, Library Digital Programs Group, The Sheridan Libraries, Milton S. Eisenhower Library, Johns Hopkins University, 3400 North Charles Street, Baltimore, MD 21218, USA Abstract: This essay weighs the notion that Web-based tag libraries represent the fifth generation of computer languages. A brief survey of the history of computer languages is provided as is an indication of why it is useful to conventionally categorize computer languages into “generations”. The essay argues that the current conventional ascription of genera- tions is incorrect and that it should be replaced with one based on what the author terms “the principle of abstraction”. Keywords: Web-based tag libraries, generations of computer languages, scripting languages, history of computer languages, fifth generation languages. TAG LIBRARIES AS FIFTH GENERATION LAN- <h3>#thisDate#</h3> GUAGES </cfif> Web-based tag libraries represent the fifth generation of </cfoutput> computer languages. This code supplements the HTML and adds intelligence In this essay I will explain what tag libraries are, what the to it while retaining the simplicity and elegance of a tag- generations of computer languages are and why they are based language. The code first sets a variable, “thisDate”, important, how our conventional list of generations of com- equal to the mm/dd/yyyy-formatted value of the current sys- puter languages has gotten off-track and is incorrect, and tem date. It then compares that date with April 15, 2008. If why tag libraries should properly be construed as falling into the two are equal, or if thisDate is greater than April 15, a fifth generation of computer programming languages.
    [Show full text]
  • Java SE and Javafx: the Road Ahead
    <Insert Picture Here> Java SE and JavaFX: The Road Ahead Danny Coward June 2010 Java is 15 – Happy Birthday ! Java's evolution Java ME, SE, JavaCard EE open Java EE sourced JDK 1.0 1995 2000 2005 2010 Java JavaFX Community Process created Java ME Before 1995... Java SE 7 and JDK 7 © 2008 Oracle Corporation – Proprietary and Confidential Java modularity • Java's growing waistline • Modularity – JSR 294: Language Support for Modular Programming – Project Jigsaw: A low-level module system, applied to the JDK • Size, Scalability, Speed Many modules, many dependencies Less modules, less dependencies Parallelism • To get traffic flowing faster on roads, planners don't raise the speed limit, they build more lanes ! • Systems have turned to multiple cores and multiple processors to fullfil Moore's Law Parallelism in Java • Garbage First Collector – Parallel – Generational – Compacting – Predictable • Fork/Join Framework APIs – Break big task into lots of independent small ones – Reassemble results Multiple Languages Sleep Funnel Bex Script WebL Tea Zigzag JESS iScript Modula-2 CAL Lisp Jickle Simkin Nice JavaScript Correlate Drools JudoScript Simkin Basic Groovy Eiffel v-language Icon Luck Prolog Mini Pascal Tcl PLAN Hojo Scala Tiger Rexx JavaFX Script Yassl Anvil foo Oberon FScript E Smalltalk Logo Tiger JRuby Clojure JHCR Pnuts G Dawn Phobos Processing Sather Jython LLP TermWare Ada Scheme Piccola BeanShell Forth C# PHP ObjectScript Yoix SALSA DaVinci Project • Allows JVM to optimize non-Java language features – Method handles – Invokedynamic
    [Show full text]
  • An Introduction to the Bean Scripting Framework
    An Introduction to the Bean Scripting Framework Victor J. Orlikowski [email protected] ApacheCon US - Las Vegas November 20, 2002 What is BSF? The Bean Scripting Framework (BSF) is... An Introduction to the Bean Scripting Framework - Victor J. Orlikowski 1 What is BSF? The Bean Scripting Framework (BSF) is... • a system by which JSPs may be implemented in languages other than Java (i.e. Javascript, Python, or Tcl) An Introduction to the Bean Scripting Framework - Victor J. Orlikowski 1 What is BSF? The Bean Scripting Framework (BSF) is... • a system by which JSPs may be implemented in languages other than Java (i.e. Javascript, Python, or Tcl) • a system by which servlets (or any Java application) may incorporate scripting languages for implementation or extension An Introduction to the Bean Scripting Framework - Victor J. Orlikowski 1 What is BSF? The Bean Scripting Framework (BSF) is... • a system by which JSPs may be implemented in languages other than Java (i.e. Javascript, Python, or Tcl) • a system by which servlets (or any Java application) may incorporate scripting languages for implementation or extension • a system allowing Java objects and functions to be used from within scripting languages An Introduction to the Bean Scripting Framework - Victor J. Orlikowski 1 What is BSF? The Bean Scripting Framework (BSF) is... • a system by which JSPs may be implemented in languages other than Java (i.e. Javascript, Python, or Tcl) • a system by which servlets (or any Java application) may incorporate scripting languages for implementation or extension • a system allowing Java objects and functions to be used from within scripting languages BSF accomplishes this by providing an API for Java to call scripting languages to execute scripts and an object registry that exposes Java objects (rather than only Java Beans) to scripting languages.
    [Show full text]