Blog
From Trephine
[subscribe] Recent blog entries
- Simple prototypal inheritance new!
- Adventures in Rhino - setters and getters
- Site improvements - fighting with Disqus
- JavaScript task chaining
- JavaScript string building benchmarks
- Efficient JavaScript string building
- Alternative JavaScript worker thread API
- Implementing JavaScript worker threads
- Thread safe DOM manipulation
- Site improvements - CSS sprites
- Trephine worker threads made easy
- Pitfalls of multithreaded browser development
- Site improvements - reducing dependencies
- The unsplittability of XML
Live Demos
Welcome to the official trephine.org project blog.
Simple prototypal inheritance
From Simple prototypal inheritance:
JavaScript has a beautiful prototypal inheritance mechanism. Unfortunately, the language's "new" operator and the prototype property make it a bit confusing to write code which leverages it. This article demonstrates one way to simplify the creation of JavaScript prototypal inheritance chains by eliminating the need for a constructor function...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:10, 5 October 2009 (UTC)
Adventures in Rhino - setters and getters
From Adventures in Rhino - setters and getters:
Rather than continue to talk about what you can do in JavaScript, and what you could do with trephine if you adopted it for your project, I have decided to switch gears and instead, actually do something myself. I've had an idea for a project that I wanted to do for a long time now, but never had the right infrastructure in place to make it happen, but now, with trephine in a mature and stable state, I think it's time to (finally) move forward...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 05:36, 12 May 2009 (UTC)
Site improvements - fighting with Disqus
From Site improvements - fighting with Disqus:
A few weeks ago I spent some time speeding up trephine.org by reducing the number of dependencies and implementing CSS sprites. That effort included rearranging the way that the DISQUS comment system is incorporated into blog articles. Today I had to redo about half that work due to changes in DISQUS...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 04:33, 6 May 2009 (UTC)
JavaScript task chaining
From JavaScript task chaining:
Sometimes, when performing a long operation in JavaScript, it's beneficial to break up the job, inserting timeouts between tasks. Doing so gives the browser a chance to execute other pending timeout-bound operations and repaint the page, applying any DOM changes. This article discusses one method for implementing these breaks called "task chaining"...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 11:35, 4 May 2009 (UTC)
JavaScript string building benchmarks
From JavaScript string building benchmarks:
Many readers pointed out (correctly) that my exposition on efficient JavaScript string building was in need of benchmarking numbers to be of real value. This article provides those number for several browsers, along with a simple test suite you can try yourself...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 08:29, 1 May 2009 (UTC)
Efficient JavaScript string building
From Efficient JavaScript string building:
It's easy to write poorly performing string-building loops in any language, and JavaScript is no exception. This article showcases common sources of string-building performance problems and supplies a set of simple guidelines for avoiding them...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 12:52, 28 April 2009 (UTC)
Alternative JavaScript worker thread API
From Alternative JavaScript worker thread API:
Yesterday's article described how to implement JavaScript worker threads using trephine. That is, how to provide a convenient and simple API for spawning Java native threads written entirely in JavaScript. This article leads off with some more concrete examples of how to use that API, developing a framework for thinking about threaded web applications...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 12:52, 28 April 2009 (UTC)
Implementing JavaScript worker threads
From Implementing JavaScript worker threads:
The HTML 5 specification promises to bring a new level of sophistication to web applications by introducing the concept of worker threads. In fact, some browsers such as Firefox 3 and Safari 4 (still in beta at the time of this writing) already support them. Unfortunately, it will mostly likely be many years before HTML 5 is widely supported (greater than say 75% market share).
The good news is that it's possible to have JavaScript worker threads today with trephine. This article provides the necessary support code, including ready-made examples you can use in your own project...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 22:13, 27 April 2009 (UTC)
Thread safe DOM manipulation
From Thread safe DOM manipulation:
In the article trephine worker threads made easy, I explored a few mechanisms which make launching anonymous worker threads trivial by altering the Function prototype. This article expands on those concepts, developing simple ways to create Java worker threads that can safely interact with the browser DOM...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 21:11, 24 April 2009 (UTC)
Site improvements - CSS sprites
From Site improvements - CSS sprites:
In an ongoing quest optimize the trephine.org site, today marks a further reduction in the number of requests it takes to load a page on this site. Previously, a page like this one would require about 22 requests to load, now it takes about 14...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 20:26, 23 April 2009 (UTC)
Trephine worker threads made easy
From Trephine worker threads made easy:
Yesterday's article explained some of the pitfalls of multithreaded browser development, and demonstrated how to avoid them using anonymous worker threads. This article leverages the flexibility of the JavaScript language to make these operations simple and painless...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 15:57, 22 April 2009 (UTC)
Pitfalls of multithreaded browser development
From Pitfalls of multithreaded browser development:
Browsers may be single threaded, but the broader spectrum of web technologies includes systems that are not. Understanding the effects of the browser threading model is crucial to developing safe cross-technology applications...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 01:14, 22 April 2009 (UTC)
Site improvements - reducing dependencies
From Site improvements - reducing dependencies:
In an effort to serve you better, the trephine.org site has undergone some size-reduction surgery today. I have reduced the total number of requests necessary to load a page by quite a bit. Whereas previously a page such as this would require 44 elements (including all CSS, JavaScript and HTML), it now takes about 22...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:51, 20 April 2009 (UTC)
The unsplittability of XML
From The unsplittability of XML:
Yesterday's article compared newline delimited JSON to other popular formats. One commenter felt that I was being disingenuous towards XML by stating that it is not easy to split for parallel processing. I stand by my assertion, and here's why...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 17:31, 17 April 2009 (UTC)
NDJ vs other popular formats
From NDJ vs other popular formats:
A commenter on my previous article about newline delimited JSON asked what the benefit is of NDJ vs pure JSON. This article compares NDJ against a variety of other data formats including CSV, XML and JSON...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:29, 16 April 2009 (UTC)
Newline delimited JSON
From Newline delimited JSON:
This short article describes a file format which I've found extraordinarily useful on many occasions, but haven't seen written about. It's called "newline delimited JSON" (NDJ), and is great for tackling a wide array of programming problems...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 21:33, 15 April 2009 (UTC)
JavaScript prototype inheritance
From JavaScript prototype inheritance:
In a previous article I mentioned that the JavaScript language does not natively support extending prototypes in the same fashion as classes are extended in a statically typed, classically inherited language such as Java or C#. This is only partly true. In reality, it is possible in JavaScript to override the prototype lookup chain to achieve the same effect - this article shows you how...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 17:17, 14 April 2009 (UTC)
Why trephine is better for applet development
From Why trephine is better for applet development:
I've noticed some common themes in some of the comments I've received about trephine. Several people have asked (more or less directly) why anyone would use trephine given that the underlying technologies (applets and LiveConnect) have been around for so long. I hope to address that fundamental question here...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:21, 13 April 2009 (UTC)
JavaScript filesystem access
From JavaScript filesystem access:
Using only native browser capabilities, it is impossible for a web application to access the user's hard drive. However, trephine allows users to opt-in and grant more privileges to scripts on a page. This article explains how to interrogate the client's filesystem using JavaScript and trephine...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 18:22, 10 April 2009 (UTC)
Self-replicating JavaScript Objects
From Self-replicating JavaScript Objects:
This article explains how to create instances of anonymous function prototypes in JavaScript. It builds on the concepts of object prototyping, anonymous functions and functions as first class citizens...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:11, 9 April 2009 (UTC)
Understanding the JavaScript new keyword
From Understanding the JavaScript new keyword:
Yesterday's article talked about JavaScript classes, or more accurately, JavaScript's prototyping model. This article explores the depths of the new keyword, explaining exactly what it does under the covers...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 03:16, 8 April 2009 (UTC)
JavaScript classes
From JavaScript classes:
JavaScript is a powerful and elegant language, with many great features. One feature which it doesn't have, however, is classes - at least, not in the statically typed, classically inherited sense. Instead, JavaScript has a robust object prototyping system, the basics of which are explained in this article...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 03:29, 7 April 2009 (UTC)
JavaScript call and apply quick reference
From JavaScript call and apply quick reference:
My previous explanation of the JavaScript call and apply functions is probably too verbose for a casual reading. This quick reference gets to the point right away, and assumes you already understand JavaScript's treatment of objects and functions. If this seems unfamiliar to you, I urge you to read the original article instead...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 11:26, 6 April 2009 (UTC)
JavaScript scope piercing
From JavaScript scope piercing:
This article describes a technique called JavaScript scope piercing. With scope piercing, a function can access global scope variables, despite other variables sharing the same name in an intermediary scope...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:13, 3 April 2009 (UTC)
Detecting JavaScript function tampering - part 3
From Detecting JavaScript function tampering - part 3:
In part 1 and part 2 of this series, the problem of determining native JavaScript function tampering is explained and the beginnings of a solution described. This article finishes the discussion by adding native function signature and plugin detection...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 16:07, 2 April 2009 (UTC)
Detecting JavaScript function tampering - part 2
From Detecting JavaScript function tampering - part 2:
This article continues the multi-part series on detecting changes to JavaScript native functions. Up to this point, the code consists of...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 11:38, 1 April 2009 (UTC)
Detecting JavaScript function tampering - part 1
From Detecting JavaScript function tampering - part 1:
When originally designing trephine's math challenge, I wanted to use a browser native confirm() or prompt() dialog to ask the user for elevated permissions. I eventually came to the conclusion that this would be impossible for several reasons...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:18, 31 March 2009 (UTC)
Extracting Excel data with Apache POI and Rhino
From Extracting Excel data with Apache POI and Rhino:
The recently released Excel data extractor trephine demo uses Apache POI to pull data out of an Excel spreadsheet file and present it in HTML and JSON format. This article explains the nuts and bolts of using POI and Rhino to extract data from Excel...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:19, 30 March 2009 (UTC)
Java detection and error handling
From Java detection and error handling:
This is just a quick note to announce a small update to the JavaScript portion of the trephine core. As outlined in the trephine.js documentation, the options hash for trephine.load() now recognizes a new parameter: onerror.
If an onerror function is specified, it will be executed in the event that the browser was unable to load the trephine applet. This could be for any of several reasons, the most common being a lack of Java support. That is, if the user does not have Java 1.5 or higher, then the trephine applet will fail to load, and trigger execution of the onerror handler (if supplied).
At this time only the executing arbitrary script demo features an onerror handler, but I plan to add similar handlers to all the other demos soon. This is a very minor enhancement, and doesn't change any existing APIs, so trephine's version number will not be incremented.
Hopefully this will make it easier for consumers to gracefully degrade in the face of Java-less browsers. As always, I look forward to your comments and suggestions!
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 02:32, 29 March 2009 (UTC)
Announcing the Excel data extractor demo
From Announcing the Excel data extractor demo:
Whew! It required quite a bit more coding than I thought it was going to, but the demo is done...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:52, 28 March 2009 (UTC)
JavaScript Excel data extractor idea
From JavaScript Excel data extractor idea:
After a lengthy conversation with my good friend Eric, it occurred to me that one really useful demo would be an Excel data extractor. That is, a trephine application which allows the user to browse for an Excel file on their system, then extract the relevant data and convert it into something more useful.
By using Apache POI, such an app could show Excel data in an HTML table, or export to CSV, JSON or XML. It would also be possible to allow the user to pick and choose certain columns to export, or delete rows, etc. And it should be no problem to include the capability to post the data back to a web service - either directly as text, or after a round compression (zip or gzip).
I wanted to have a demo ready to announce today, but it's a bit more complex to produce than I had at first anticipated, so unfortunately it'll be a few more days before I get it out there.
Does this sound useful to you? Are there some obvious features that I omitted above? Please comment and let me know! As always, I look forward to your suggestions.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 17:28, 26 March 2009 (UTC)
JavaScript copy to clipboard
From JavaScript copy to clipboard:
This article demonstrates how to insert text into the system clipboard using trephine and a little custom JavaScript...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 21:07, 25 March 2009 (UTC)
Browser clipboard access
From Browser clipboard access:
Accessing the system clipboard is a notoriously difficult web problem. No major browser makes it easy, and only some even have APIs. Nevertheless, it is possible to access the system clipboard from the browser, given a sufficiently powerful plugin. This article shows you how...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 16:19, 24 March 2009 (UTC)
Script onload piggybacking
From Script onload piggybacking:
This article demonstrates how to dynamically add a <script> node to the DOM, supplying custom code which will be executed only when the script has successfully finished loading...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 10:00, 23 March 2009 (UTC)
JavaScript call and apply
From JavaScript call and apply:
Based on some great feedback to my article about JavaScript's treatment of the this keyword, I've decided to have a stab at explaining two other often misunderstood JavaScript language features: call() and apply()...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 16:51, 20 March 2009 (UTC)
JavaScript loop closures
From JavaScript loop closures:
JavaScript's variable scoping rules can cause problems for developers, especially when using loops to set up events. This article introduces one elegant approach to these situations called a loop closure.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 18:46, 19 March 2009 (UTC)
Understanding JavaScript's this keyword
From Understanding JavaScript's this keyword:
A few days ago I wrote about Aspect Oriented JavaScript, explaining how to replace a given function or method with a wrapper. To fully understand that concept, a proper understanding of JavaScript's treatment of this is helpful. This article aims to provide a simple overview of how this is determined in various JavaScript contexts.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:39, 18 March 2009 (UTC)
Bespin trepanation
From Bespin trepanation:
The official extension sharing mechanism for Bespin has yet to be released, but it is already possible to share code via bookmarklets. This article announces a trephine bookmarklet called trepanation, which provides a Java-based Copy/Paste implementation as well as dynamic script evaluation.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 07:36, 17 March 2009 (UTC)
Aspect Oriented JavaScript
From Aspect Oriented JavaScript:
Years ago, Aspect Oriented Programming got a lot of buzz, particularly with respect to statically typed, classically inherited languages like Java. JavaScript has this ability innately, with no special frameworks required.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 12:13, 16 March 2009 (UTC)
Trephine adds support for Groovy
From Trephine adds support for Groovy:
A new trephine demo is available today: the zero-install Groovy demo.
In the same fashion as the JavaScript, Ruby and JavaFX demos, the Groovy demo provides a web-based interface for authoring and executing Groovy script.
Aside from showing off trephine's ability to dynamically load Java scripting platform languages, this demo can be used as an extremely low-barrier way to start learning and using Groovy. Enjoy!
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:12, 13 March 2009 (UTC)
Opera LiveConnect OriginNotAllowedException
From Opera LiveConnect OriginNotAllowedException:
This article describes Opera's especially strict LiveConnect security implementation and instructions on how to build a cross-domain capable applet despite it.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:53, 12 March 2009 (UTC)
LiveConnect examples
From LiveConnect examples:
Yesterday I described the various meanings of the term "LiveConnect". This article contains code examples to demonstrate how intercommunication between Java and the DOM can be accomplished.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:23, 11 March 2009 (UTC)
Understanding LiveConnect
From Understanding LiveConnect:
LiveConnect is one of those overloaded terms that can mean several subtly different things depending on the context of the situation. This article discusses the various definitions and when they apply...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 18:16, 10 March 2009 (UTC)
First attempt at zero-install JavaFX
From First attempt at zero-install JavaFX:
The JavaFX demo is now open for business. Like the ruby demo and the JavaScript demo, this demo allows the user to specify arbitrary JavaFX code, which is then compiled and run...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:53, 9 March 2009 (UTC)
What can't you do in a browser?
From What can't you do in a browser?:
- An efficient and valuable man does what he can, whether the community pay him for it or not. The inefficient offer their inefficiency to the highest bidder, and are forever expecting to be put in office.
- --Henry David Thoreau from Life without Principle
In the interest of being an efficient and valuable man, I hereby ask the web developer community the following: What have you always wanted to do in a web application that the current technology simply doesn't allow?
I certainly have my own ideas, but I'm curious to know what YOU want. Is it access to the filesystem? or a persistent client side database? Maybe launching shell commands, or running script in another language?
No holds barred, the sky's the limit. Tell me what you've always wished were possible, and I'll see if I can make it happen!
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 12:13, 6 March 2009 (UTC)
Where in the world is javafx.stage.Stage?
From Where in the world is javafx.stage.Stage?:
Yesterday I wrote about trephine and JavaFX hoping to explain that the two are intended for very different purposes and therefore have wildly different characteristics.
It occurred to me that one way to really demonstrate this would be to develop a JavaFX demo in the same vein is the ruby demo to showcase how trephine makes it possible to use any Java scripting platform language. This has been quite a bit more difficult than I had at first hoped...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 13:25, 5 March 2009 (UTC)
Trephine vs JavaFX
From Trephine vs JavaFX:
Maybe it's because they're both based loosely on Java and delivered through applets - I can't say for sure - but for one reason or another, a number of people think of JavaFX when first learning about trephine.
This article discusses trephine and JavaFX in terms of features and project goals, ultimately to determine whether the two technologies directly compete.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:00, 4 March 2009 (UTC)
Tech startups start with a question. What's yours?
From Tech startups start with a question. What's yours?:
I have long been interested in the concept of delivering web applications as powerful as their desktop counterparts. Particularly with regards to mashups, which are always at the mercy of the same origin policy. However, I never made any progress towards advancing the state of the art until I asked myself a seemingly simple question:
"Is it possible to execute arbitrary privileged script in any browser on any platform?"
As it turns out, the answer is yes (even though it's more difficult than one might at first imagine). The key takeaway is that once I had phrased it as a question, merely as a hypothetical whim, it became something actionable - something that I had to know, to figure out, to solve...
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 12:22, 3 March 2009 (UTC)
How to fix window.prompt in Internet Explorer
From How to fix window.prompt in Internet Explorer:
This article explains how to fix the two main problems with window.prompt in Internet Explorer:
- Only the first two lines of the message are displayed, and
- In IE 7 and above, prompt is effectively blocked - the browser issues a security warning instead.
No, this is not another DHTML solution - you'll be able to call window.prompt() from JavaScript just like you've always wanted to, and it will show the user an native system dialog.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:12, 2 March 2009 (UTC)
Why applets continue to fail, part 2
From Why applets continue to fail, part 2:
I hadn't meant to make this a two part series, but the first article, Why applets continue to fail, and why they still matter, evoked such reader response that I felt it warranted a redux. Here I'll address some of the comments and concerns which arose form the previous article, including the safety of a signed scriptable applet, dynamically injecting applets using iframes and JavaFX.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:05, 27 February 2009 (UTC)
Why applets continue to fail, and why they still matter
From Why applets continue to fail, and why they still matter:
Historically there have been many diatribes trying to explain why Java applets failed in the first place. This article won't go into that. Instead, I'll focus on why applets continue to fail, and why, despite all the negative, you can't write them off just yet.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 14:47, 26 February 2009 (UTC)
Trephine adds Ruby support
From Trephine adds Ruby support:
After quite a bit of development, hacking, tinkering and debugging, the trephine Ruby demo is finally complete (listed on the demos page).
In the spirit of the Executing arbitrary script demo, the Ruby/JRuby demo is fairly simple. After activating the demo and allowing it to download its dependencies, you see a textbox ready to accept your arbitrary ruby commands.
Examples are posted on the demo page, scroll down to see them. There currently aren't that many, so if you think of something good, please post a comment!
Typically a given demo will not be necessarily tested on all supported platforms - only core changes must go through the gauntlet of the platform support matrix. In the case of JRuby support though, all available platforms were tested and passed.
I'm really excited about this new capability. There's a certain allure to developing desktop quality applications, written in the developer's choice of language and delivered through the browser.
Enjoy! As usual, I look forward to your comments. :)
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 09:21, 11 February 2009 (UTC)
Announcing trephine version 1.2
From Announcing trephine version 1.2:
Shortly after releasing version 1.1, it became clear that a few more features were necessary for the more fully featured demos to come. This latest version includes two major enhancements:
- addSystemJar()
The executor thread object now has an additional method called addSystemJar() which effectively splices in a given jar into the System classpath. It can be specified as a string, File, URI or URL. This was necessary to make other Java scripting engines (JRuby, Jython, etc) available at runtime.
Example usage (Java context):
java.lang.Thread.currentThread().addSystemJar('/path/to/some.jar');
- JSON
Both the browser JavaScript portion of trephine (trephine.js) and the Rhino JavaScript context now include a JSON encoder. This means it is no longer necessary for developers to provide a JSON implementation to realize better communication between the browser and Java contexts.
Example usage (browser context):
trephine.toJSON(value);
Example usage (Java context):
JSON.stringify(value);
The implementations are identical, and adapted from Douglas Crawford's excellent json2.js script.
Now that these infrastructural pieces are complete, the other language demos (starting with JRuby) will be posted shortly.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 04:14, 11 February 2009 (UTC)
Announcing trephine version 1.1
From Announcing trephine version 1.1:
After waves of rigorous testing, trephine version 1.1 is here! In this release you'll find a number of enhancements and fixes, of which these are a few:
- Expanded platform support including fixes for support for Safari on Mac OS 10.4 (Tiger)
- Better failover between direct applet communication and anonymous marshaller
But perhaps the most important feature of version 1.1 is that the source code for the trephine core is available for the first time from the download page. There are two licensing options available:
- If you're just curious to take a peek under the hood, there's a Research Only Evaluation Agreement
- If you're looking to build your own jar(s) from the source and host them yourself, there is now a Commercial Developer License
Note that the download page has more information about which license is applicable in which situations.
Of course, if you only want to use trephine, then hotlinking is still the best option (see Getting started for instructions).
Enjoy! Looking forward to any feedback.
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 09:48, 15 January 2009 (UTC)
Launching trephine.org project blog
From Launching trephine.org project blog:
Welcome to the trephine.org project blog - the best place to find information on the project status, release announcements, bug fixes, and technical development updates. Hopefully this will engender the kinds of discussions which have already begun on the shell commands and file browser demo pages.
I have a long backlog of articles to write about a variety of trephine related topics, as well as many more demos to write and publish. Here's a short list of some of the more immediate project goals:
- Broadening language support
Create demos for most or all of the high-profile JVM languages, especially JRuby, Jython, Groovy and Scala.
- TrephineHttpRequest
Create an XMLHttpRequest() clone which uses trephine (and probably HttpClient) as its transport mechanism. This would allow user opt-in unrestrained cross-domain requests, something the web has needed for quite some time.
- Real applications
Although demos are really great at pointing out individual features, to really illustrate the capabilities of a trephine based web application it will be necessary to generate a few full-featured applications.
This list is just the beginning, so please post your suggestions as to what you'd like to see out of trephine. I look forward to hearing from you!
[read more ...] (view comments)
--Jim R. Wilson (jimbojw) 10:05, 5 January 2009 (UTC)