1. Introduction ¶
This documentation is a work in progress.
Jtalk is an implementation of the Smalltalk-80 language. It allows developers to write client-side heavy web applications in Smalltalk. Jtalk includes an integrated development environment with a class browser, workspace and transcript.
Jtalk is a young piece of code and evolves quickly. Some features are still incomplete and you may very well encounter bugs, in which case you can file an issue or a pull request on the repository.
Jtalk includes the following features:
- It is semantically and syntaxically equivalent to Pharo Smalltalk (the implementation considered as the reference)
- It is written in itself and compiles into efficient JavaScript
- A canvas API similar to Seaside to generate HTML
- A jQuery binding
2. Differences with other Smalltalk implementations ¶
3. Committing changes to disk with the web-based IDE ¶
The class browser is able to commit changes to disk. The commit category
button will send a PUT request with the compiled JavaScript code of all classes in the selected class category in a file named js/CATEGORY.js
.
The easiest way to enable committing is probably to setup a webdav with Apache.
The following steps explain how to setup a webdav for Jtalk with Debian, but the setup on OSX and other Linux distros should be similar.
Installing Apache and enabling the dav module
Evaluate the following as root:
~# apt-get install apache2 ~# a2enmod dav ~# a2enmod dav_fs
Creating a password for the webdav
~# htpasswd -c /etc/apache2/htpasswd-webdav USERNAME
Setting up the webdav directory
Add the following lines to the default vhost (in /etc/apache2/sites-available/default):
Alias /jtalk/ "/path/to/jtalk/" <Directory "/path/to/jtalk/"> Options Indexes MultiViews FollowSymLinks DirectoryIndex index.html AllowOverride None Order allow,deny allow from all Dav on AuthType Basic AuthName "jtalk" AuthUserFile /etc/apache2/htpasswd-webdav <LimitExcept GET OPTIONS> Require valid-user </LimitExcept> </Directory>
Make sure the group www-data
has required rights to make changes to files in the webdav directory.
Restarting Apache
To restart Apache, evaluate the following:
~# /etc/init.d/apache2 restart
and go to http://localhost/jtalk/
.
The class browser should now be able to commit changes to disk.
4. The counter example ¶
The following example is the traditional Seaside-like multi-counter application. The buttons at the bottom of each counter increase or decrease the counter.
Open a on the Counter
class in the Canvas
class category.
Each Jtalk widget is a subclass of Widget
. A widget is a graphical component. The #renderOn:
method is used to generate HTML using the HTML canvas.