Lioness (Languages Interop Framework)

By Author: unknown
Framework for making Windows applications that are one .exe file in AutoHotKey_L,C++,C#, VB.NET,Java,Groovy,Common Lisp,Nemerle,Ruby,Python,PHP,Lua,Tcl,Perl,Jint,S#,WSH VBScript,HTML/JavaScript/CSS,COM, PowerShell without compiling . For .NET 4.

Feature

  • Lioness (it stands for Languages Interop On Net Enterprise Software System, previously known as Languages Interop on Net Enterprise Super System) is a framework (programming languages interoperability/mixed-language programming framework) for writing Windows applications in one or many computer languages cleanly mixing code of the various supported languages. The languages supported are: AutoHotKey_L, C++,C#, VB.NET, Java, Groovy, Common Lisp, Nemerle, Ruby, Python,PHP, Lua, Tcl, Perl, Jint, S#, VBScript/JavaScript/HTML/CSS, WSH VBScript, WSH JScript, COM and PowerShell. AutoHotKey_L works as a host of the other languages and for interoperating with them, by calling their classes and functions and exchanging data with them, through a .NET C# layer (you can write a VB.NET layer instead if you wish) integrated into Lioness. You can keep state of the application in any or all of the languages supported.
  • Applications you develop are contained in only one compressed and encrypted executable file (optionally). The executable file can contain any kind of files you need to use. The executable autoinstalls itself the first time it runs and can do registry enties, create shortcuts etc. It always remains one file that can be moved around in any folder, even read only folders, in any media, and work fine without any problem.
  • Lioness runtime (that includes the supported languages libraries) is included in the one file .exe Lioness applications and is less than 50 MBytes.
  • For development, no installation of any languages or frameworks is necessary except for AutoHotKey_L (optional, you can use the included portable AutoHotKey_L compiler instead), .Net Framework version 4 and VC++ 2010 redistributable (only if you need Lua support, optional). Their installers are included in the distribution. For running the executable Demo, you only need the .NET Framework version 4 (optional, if you virtualise the demo to include .NET Framework version 4 and run that instead) and VC++ 2010 redistridutable installed (optional, if you virtualise the demo to include VC++ 2010 redistributable instead and run that version). Their installers are included in the distribution.
  • Applications you distribute require only the .NET Framework version 4 (optional if you virtualise your Lioness application to inlude .NET Framework 4) and VC++ 2010 redistributable (for Lua support, optional if you don't use Lua or virtualise your Lioness application to include VC++ 2010 redistributable) installed in the user's PC. The .NET Framework Version 4 installer and the VC++ 2010 redistributable are included in the distribution.
  • For development, if you need Powershell functionality in Lioness, you need to have PowerShell install in your computer. Your developed Lioness application with PowerShell functionality will need to run in computers that have PowerShell installed. Also, the Demo requires PowerShell installed for the PowerShell Demo to work.
  • Lioness distribution includes a portable two files AutoHotKey_L compiler that you can use to compile your Lioness applications into one executable file. Thus, you don't need to install AutoHotKey_L in the machine where you do your development, but if you do, you don't need to compile your project every time you change it, you just run your application and get the changes.
  • Lioness is portable. So, for instance, you can put it in a USB and develop at any Windows PC (provided you install the required software, AutoHotKey_L(optional, you can use the included portable AutoHotKey_L compiler instead), .NET Framework version 4 and VC++ 2010 redistributable (only if you use Lua, optional), in the PC you are developing, if they are not already installed).
  • AutoHotKey_L interpreter is portable and is included in the distribution in its own directory. This way, you don't need to install AutoHotKey_L when you develop, just run the application with the portable interpreter. Add the path of the interpreter to PATH and run AutoHotKey.exe Lioness.ahk (or whatever your application is called) to lauch your Lioness application.
  • VC++ 2010 redistributable is only required to be installed for development and to be installed at your users' PCs to whom you distribute your applications, if your applications will use Lua. On the other hand, you can distribute Lioness applications that use Lua without the need for VC++ 2010 redistributable installed in your users, if you virtualise your Lioness application.
  • If you have Visual Studio, you can make a one file executable installer that will include your one file executable application and that in addition to placing your one file executable application in a directory, it will also detect if the user has .NET Framework v.4 and VC++ 2010 redistributable installed in his/her PC and if not, it will offer to install them.
  • The distribution includes both the Web small in size .NET 4 Framework installer and the full offline .NET 4 Framework installer.
  • A portable one .exe file Cameyo (virtualisation software) is included in the distribution. Cameyo allows you to virtualise your Lioness application, so it won't need .NET 4 Framework nor VC++ 2010 redistributable, but will include the .NET 4 Framework and VC++ redistributable. After virtualisation, your Lioness application will still be one file. If you need to include other programs too, install them in your virtualised Lioness application. Cameyo seems to produce virtualised applications best suited to run in the Windows version where the virtualisation took place. Warning: It may not be legal to package .NET 4 Framework and VC++ 2010 distributable along your Lioness application using virtualisation software like Cameyo (You may also want to use VMWare's Thinapp, instead of Cameyo, that is more advanced, but it is a commercial product). Please consult a lawyer if unsure.
  • You never need to compile code manually, whenever this is needed, it is done automatically.
  • No need to run or configure anything to start developing. Work right away on the source that is included in the distribution.
  • No need to install the platform, just unzip the distribution and work on it (the platform is found in the source_files folder in the distribution). Because the platform is actually a complete application itself, it is actually a template that will save you a great deal of time, because you will not need to write your application from scratch. Most of what you need a Windows application to do, is already there, just modify the user interface, remove the user functionality that you don't need, add user interface functionality you need, add your business logic and you are done.
  • Develop Windows applications quickly, benefiting by AutoHotKey_L, HTML/JavaScript/CSS and the scripting languages.
  • Develop extraordinary user interfaces quickly, that use hotkeys, hotstrings, mouse gestures, voice recognition, computer generated voice, timers, graphical user interfaces in one or more languages, even enhance them with HTML/JavaScript/CSS, make windows transparent, embed COM graphical user interface components, move mouse at desired positions on events firing or click automatically whenever needed, send keystrokes and text automatically and more. You can even create elegant, usable user interfaces in HTML/CSS or HTML/CSS/JavaScript and make use of JavaScript libraries for user interfaces and widgets.
  • Automate the use of the applications you develop or other applications. Administer any aspect of Windows.
  • Make applications that easily interact with other applications, Windows applications or Web applications.
  • Use the power of all these languages to develop very complex applications.
  • All these languages come with their standard libraries (almost all of them) included. The platform also does not require JDK for Java or Groovy development nor JVM in the user's PC to use the applications you built. Lioness comes with embedded .NET version of JDK. No runtime for any of the languages supported is also needed to be installed.
  • Use countless third party libraries for all these languages supported.
  • Interpreted or compiled? It's up to you. You can distribute your application either in source files along with the portable interpreter or compiled (or both).
  • Use counteless code snippets available on the Internet or books for all these languages. Have you found a snippet you need, in Java? Fine, use it. Have you found another one you need, in C#? Excellent, use it!
  • Use the non scripting (auto-compiling) languages to change the code of the scripting languages in runtime or Common Lisp to generate code or mutate its classes in runtime. Nemerle and S# are also able to generate code in runtime. Create VBScript/JavaScript/HTML/CSS or WSH VBScript code on the fly in runtime. You can dynamically create as many classes as you want that will remain alive until you close the application. In Lioness only AutoHotKey_L, C#, VB.NET and Java are auto-compiled, the rest of the languages are normally used as interpreted (scripting) languages, even though some of them are compiled in other platforms. Through Nemerle you are also to run dynamic C# code, that you can alter as you wish, before running it.
  • Store and manipulate scripting languages code in a database, then load it from the database, alter it if you want and execute it in a non scripting language.
  • Code your applications to connect to any DBMS, even flatline DMBSes.
  • Keep your code, no matter what language you use, in one filetype only.
  • Modularise your code using #include to include files with code. For the embedded languages, store your code in various string variables, then store the strings in files, include them with #include and finally concatenate your strings. You can also include files that include files, making your code, as modular as you want.
  • You can write code that cannot be decrypted or decompiled in AutoHotKey_L. So, you can write sensitive code in AutoHotKeyL and non sensitive code in any of the languages supported.
  • The powerfull engine of the framework allows you to write code in all of the supported languages in the same source file/files. If the supported languages are not enough, you can build Dlls in other languages, like in F# or C++ etc and use the Dlls from your Lioness application.
  • Easily and quickly load and use Dlls written in any language, including Windows OS Dlls.
  • Object oriented paradigm, prototype based paradigm, functional paradigm, imperative paradigm and declarative paradigm are all offered and are highly developed in the languages supported. Use them and combine them if you need.
  • No need to program in all of the supported languages. At the bare minimum you program in AutoHotKey_L only, or in AutoHotKey_L and JavaScript/HTML/CSS or in AutoHotKey_L and VBScript/HTML/CSS or in AutoHotKey_L and COM or in AutoHotKey_L and WHS VBScript or in AutoHotKey_L and WHS JScript or in AutoHotKey_L and C# or in AutoHotKey_L and C# + one or more languages or in a combination of the aforementioned. Basically, you are free to Implement functionality in the languages that you want.
  • Lioness is especially suited for agile software development.
  • Do you have many small applications/scripts and language runtimes here and there? Convert your applications/scripts to run in Lioness and write a user interface for them in Lioness. That way you will access all you programs from only one location.
  • Offer Lioness as a gift to people that want to learn programming. It will require some initial investment into learning Lioness, but then they can focus on learning the supported languages.
  • Lioness is ideal for people that want to easily testdrive popular computer languages.
  • Lioness is ideal to those that want to learn programming, without messing with compilers.
  • Put sensitive files into your one executable compressed/encrypted Lioness application and on run request a password to extract them.
  • Once you are done developing you can turn auto-compiling to off and compile to .exe. This will make your application run faster.
  • Lioness comes with embedded SQLite (a serverless flat based, very fast DBMS) for C# or VB.NET. An example SQLite database is also included.
  • You will often find yourself writing code in code in code (even code in code in code in code, if you run C# from Nemerle). In all these instances, you can write multiline code, without escaping characters needed. Note: when you write code in code in C# or VB.NET layer put @ in front of your string literal and if you need double quote, write it as "" (that is use two doublequotes instead of one).
  • Your C#/VB.NET classes and the code that is included in the supported languages there, doesn't die if a method dies.
  • Lioness's auto-compiling is not slower than if you were compiling your code manually.
  • For very fast execution of the interpreted languages, you will need to set fast computers as requirements to those that you distribute your Lioness applications. That applies to the initialisation of the interpreters though. Once the interpreters run for the first time in a new instance of your Lioness applications, it may take a short delay for it to complete their initialisation, but ever since, the interpreting languages will run ultra fast. If you want, you can initialise the interpreters at your application startup. Also, you will often built classes and function in the interpreted languages that will be loaded into memory and then use these classes. functions which is pretty fast as compared to writing procedurally all the code you write in the interpreted languages (procedural interpreted code is also loaded in memory, but you can't reuse it, so you can't take advantage of the fact that the code is in memory, speedwise).
  • Most of the code your Lioness executes, the first time it is executed in an instance of your application, it's loaded in memory or cache and ever since the code is reused, it will be loaded from memory or cache. For all the code you have in classes in the C# or VB.NET layer, when you instantiate the classes for the first time, all the code in the classes is put directly into memory and used from there, when you use it.
  • The scripting languages supported, like Ruby, Python or Lua run faster in Lioness than their regular counterparts (like CPython).
  • Lioness has the unusual feature to allow you to split C#/VB.NET classes into text strings that you can store in files.
  • Lioness allows easy reading and writing of ini files, where you can store information you want your Lioness application to use.
  • The supported languages have extensive documentation and examples in the form of books, online documentation/tutorials and forums. There are also IRC channels at irc.freenode.net where you can ask for help.
  • Source code has a lot of comments to help you write your own applications. Source code also has full examples and the full code of the Demos provided with Lioness.
  • The distribution includes a REAME.txt file, that explains how the languages interoperability is achieved, how to get started and how to debug your multiple languages application. A specialised var_dump method is included in Lioness to allow you to provide detailed information of objects in order to to help you with the debugging of your applications. A debugging console is also provided that allows you to append data there and show the console (it pauses execution of the application at that point). Logging functionality is also provided. Auto-compiling shows compiling errors in message boxes for AutoHotKey_L, C#, VB.NET and Java. Uncaught exceptions are displayed in message boxes or in the command prompt. Fatal errors are also displayed in message boxes or in the command prompt. If a method of yours dies, in a window application, use try/catch to catch to display the error. Both of course can be caught and be ignored or handled.
  • The distribution includes an IDE that is portable (so you can use it anywhere you go, to write your programs) and it is only one file. It supports all languages offered by Lioness (except for AutoHotKey_L, Groovy, Nemerle, HTML, S# and PowerShell) plus XML, Assembler, Batch files, SQL, Text, Yaml and more. Groovy and Nemerle may be supported in the future. To make the most use out of it, store the code of each language to its own source files. The distribution also, includes a portable IDE for AutoHotKey_L. There is also a two file portable HTML editor included in the distribution.
  • Lionness has inbuilt support for SQLite in C# or VB.NET. The distribution includes the one file SQLiteBrowser, with which you can open, modify, execute queries on your SQLite databases etc.
  • The distribution includes a small Lioness application that on run, deletes temporary files left by a Lioness application in the Windows Temporary Folder.
  • Lioness unistalls very easily. Simply delete the files you Lioness application creates during its auto-installation phase. To do that easily, run the application Lioness_delete_temporaty_files included in the distribution.
  • The distribution includes a portable version of ilmerge and a portable GUI version of ilmerge, so that you can combine your .NET Dlls into one Dll.
  • The distribution include a portable GUI version of 7-Zip, a compression utility for creating a command line self extractor with all of your files that your Lioness application uses. Instead of including and extracting many small files from your one .exe file application, include in your .exe application a self extractor that silently extracts all the files you need. When the extraction is completed your application is started. With extracting your files from the large one file extractor instead of extracting many small files directly from your application, a dramatic speed increase is achieved for the auto installation phase of your application, that occurs the first time you run your application. Also, using 7-Zip command line self-extractors (of 7z format) at maximum compression, leads to significantly smaller in size Lioness .exe applications.
  • All the supporting software that comes with Lioness is free to distribute and free to use for non-commercial or commercial purposes.
  • The license of Lioness is the Simplified BSD License, also known as the FreeBSD License, that allows you modification of the code and commercial exploitation of Lioness and the applications you write with it.
  • A Demo is included in the distribution that showcases the platform. The Demo demonstrates various tasks that can accomplished with the Lioness as well as interoperability among the languages supported and debugging of code written in multiple languages. The Demo is in fact the whole platform compiled running the example snippets included in the platform.

Extensive Server Path (XSP)

XSP is a free, open-source library of functions using DOM XPath in PHP. It's rather new and I'm still working on it, so this is the beta version. I'll have a support page up soon, but there is a documentation text file to help you out, along with example files. You can use XSP to query XML files, pr.........

Similar: 13%

Launch4j Executable Wrapper

Cross-platform Java executable wrapper for creating lightweight Windows native EXEs. Provides advanced JRE search, application startup configuration and better user experience....

Similar: 12%

The Ring Programming Language

The Ring is an Innovative and practical general-purpose multi-paradigm scripting language that can be embedded in C/C++ projects, extended using C/C++ code and/or used as standalone language. The supported programming paradigms are Imperative, Procedural, Object-Oriented, Functional, Meta programmi.........

Similar: 12%

Ryouko

This project has been moved to https://github.com/foxhead128/ryouko...

Similar: 12%

GambleKit

GambleKit is a free open-source C++ object oriented library for quick and easy building of slot machine and gambling games with reels and GUI management. It relies basically on declarative programming style, so the programmer needs simply to declare, for example at creation time, the basic layout a.........

Similar: 12%

Madedit-Mod

Madedit-Mod is a clone of MadEdit with a log of critical bug fix from me or other developers. A lot of new features were added, such as Drag-Drop Edit(cross platform), Highlight word, etc. The reason that I maintained this project is that the author of MadEdit had not worked on it for for a long t.........

Similar: 11%

JILRuntime/JewelScript

A general purpose, object-oriented script language that compiles into code for a register based virtual machine. The language is quite similar to object-oriented high-level languages like Java and C#. The library is entirely self-sufficient and ANSI C compliant. It's main purpose is to be embedded .........

Similar: 11%

N-Tier Windows Forms Framework

Updated to work with Visual Studio 2012. The N-Tier Framework for Windows Forms is designed to put the developer in control with tools & APIs for the rapid development of database applications in c#. NTier is designed to leverage developers' skills and familiarity with Visual Studio and Windows Fo.........

Similar: 11%

clinicalStudyTracker

Developed at Medical Research Council UK to meet a common clinical trial need to track various types of clinical data. Users log dates of completed tasks against participant ID. Simple, useable, reduces lost data! Makes graphical progress reports....

Similar: 11%

ZEsarUX

It's a ZX Machines Emulator for Unix, including: -ZX Spectrum -ZX-Uno -ZX80 -ZX81 -Z88 -Jupiter Ace -Chloe 140 SE, Chloe 280 SE -Prism -Timex TS 2068 -Amstrad CPC 464 It has been voted as the best Spectrum emulator on 2015 by web retrogamingtotal.com: https://twitter.com/retrogamertotal/status/678.........

Similar: 8%