The preview of McIntosh's iPhone/Touch App Store apps based on Squeak and Seaside: he describes cutting down the image, connecting with UIkit (and webkit?), the objective-c bridge, and porting the VM itself.
In the comments, John McIntosh complains about the lack of an Android Squeak VM.
I can't imagine building a user interface intensive application through this technique. It would be extremely cool if they could integrate Interface Builder,
This Smalltalk company seems to have reified the Cocoa UI toolkit beautifully. Judging by the Ambrai website, there don't seem to be any retail Smalltalk compilers in the pipeline.
However this could be a great lesson in how to reify John McIntosh's new Objective-C bridge for Squeak, or Etoile's Smalltalk library, if it hasn't been done already.
The compiler is in three components. SmalltalkKit contains everything required to take a string containing Smalltalk code and compile it to a set of Objective-C objects.
The Support library contains things needed by Smalltalk but not Objective-C. The most important class here is the BlockClosure class, which implements a Smalltalk block as an Objective-C object with a function pointer as an instance variable and pointers to bound variables and space for promoting other variables (eliminating the need for garbage collected stack frames).
The final part is a tool which compiles a Smalltalk file, instantiates a specified class, and send the instance a run message. This is very small and shows how the compiler can be used, and will serve as the framework for writing complete applications in Smalltalk.
VisualAge started out as a demonstration prototype I wrote using Digitalk Smalltalk/V. The idea was to make something like the NeXT interface builder in Smalltalk as an adjunct to the Smalltalk IDE. For those who are not hip to such things, the Interface Builder, originally a Lisp program before Steve Jobs hired the author, lives on as part of Apple’s XCode tool suite for OS/X for the Mac and the iPhone.
VisualAge started out as a demonstration prototype I wrote using Digitalk Smalltalk/V. The idea was to make something like the NeXT interface builder in Smalltalk as an adjunct to the Smalltalk IDE. For those who are not hip to such things, the Interface Builder, originally a Lisp program before Steve Jobs hired the author, lives on as part of Apple’s XCode tool suite for OS/X for the Mac and the iPhone.
Documentation for a new (2008) Objective-C bridge for Squeak - as created by John McIntosh
This was used to get a local Pier wiki server on the iPhone / iPod Touch.
Its interactive Smalltalk-like Object-browser offers an intense way to explore the objects you've created, traverse their instance variables and methods and really start to interact with them in a way not normally permitted by Xcode. You can visually review the object's current state. You can pick new messages to send.
F-Script Anywhere, which is included in the standard F-Script binary distribution.With FSA, you can inject F-Script into any running Cocoa application and inspect the object tree at runtime -- without having source! Or even requiring source changes! From a development perspective, this lets you script your applications much more simply than AppleScript -- you don't have to create a parallel and incomplete object model.
F-Script is a lightweight open-source scripting layer specifically designed for the Mac OS X object system (i.e. Cocoa). F-Script provides scripting and interactive access to Cocoa frameworks and custom Objective-C objects. It aims to be a useful and fun tool for both beginners and experts, allowing interactively exploring, testing and using Cocoa-based objects and frameworks.
Based on Smalltalk, F-Script provides a pure object-oriented environment that leverage Mac OS X technologies and includes significant innovations
Exploring Cocoa with F-Script
Learn F-Script in 20 Minutes and Have Fun Playing with Core Image
Scripting Cocoa with F-Script
Creating Cocoa Classes with F-Script
System-wide Scripting with F-Script
Embedding F-Script into Cocoa Applications
string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants
Erlang is the first language to properly execute a bullet-proof thread safe hot updating seamlessly distributed super-scalable VM which is destined to rule the web,
she doesn't have any actual computers to run her code. Enterprise architects will later relearn her techniques in order to program in UML.
All my years of obsessive, insular study, and the sacrifice of a well-rounded personality in favour of a detailed grasp of programming paradigms, suddenly became worthwhile.
Every language[n] seems to be influenced by that great language[n-2] but swears it has never heard of that pathetic language[n-1].
not one of them mentioning Dijkstra being sensible and just using a typewriter
"No matter how much kung fu you know, someone else always knows more."
I think you forgot Plankalkül by Konrad Zuse, that was published in 1948,
A whole page of programming in jokes, many are both original and funny if you know the history. You only have to have written a "Hello World" program, or read a language war on Usenet, to understand what is going on here. Some of the dates are deliberately wrong.
Before Cocoa was really big and before there were a lot of objective C programmers because of that, I think they saw Java as being the future and they ported it to Java and since then I think Objective C has really seen a resurgence because Cocoa has really won as the way of developing application was then and I think they probably wouldn't have done that if they knew what they know now.
Web objects was what really opened my eyes to the idea of having extreme amounts of session state and extreme amounts of session state in a form of a tree of state full objects that represented part of the web page and that by keeping that around between requests you could keep much more information there and you could have a much higher level of abstraction when you were building a web application than using the kind of more traditional approach, which is to have a small amount of session states other stored on the cookies or stored on the server but have the best majority of the states be passed in the URL be passed in the form parameters and that core idea certainly was taken from web objects.
web objects didn't use continuations and Seaside doesn't have to use continuations now either, in the more recent versions of Seaside you can optionally use them
So we have on any given server for Dabble DB we'll have thousands and thousands of these images, for thousands of customers who are at any one time mapped to that server but maybe only twenty or thirty of them will be in memory. So typically this would be maybe hundred meg memory images, we'll have twenty or thirty of them so we're using 2-3 gigs of memory.
But the people especially somewhere like an orchestra or small business they don't have a lot of IT support, they probably don't have a lot of money to maintain a traditional or Access database or file maker database or something like that. Certainly they don't have anyone who is going to build them a custom web application for it. And so this Dabble DB is a tool that lets them collaboratively online build a mini application that has their data model and they can do a lot of the things that they might expect from a custom web application.
without forcing them to make any kind of upfront decision like you might for a database
our design rule is it should not be possible to have a syntax error. And so there are formulas in that if you have multiple columns of data you can say "I want to create a new column, that is times this one”.
really we've had no problems with it as a platform. If we had we would have just moved to a commercial Smalltalk but so far, and I mean if there were any problems we would have seen them by now.
all of the I/O is non blocking. And the VM takes care of that I mean it looks to your Smalltalk process like it's blocking but other Smalltalk processes run just fine at the same time.
Having twenty concurrent requests being serviced by twenty Squeak VMs on the same machine performs better than having twenty concurrent requests serviced by let's say four Squeak VMs on the same machine.
The number of people concurrently accessing the database is something that can be handled by one Squeak VM, the dataset is something that can all fit into memory, into the Squeak image.
under a hundred megs of data, under twenty people that need to access this data, and those are really the people that we are targeting which isn't to say that we don't support people with larger data sets or larger teams, but it's not the majority of our customers.
The largest images we see are hundreds of megs not giga bytes.
you can have sort of an object space that is Tera bytes big and you can spread the load to accessing that object space over however many processes or even machines that you need because you can have many VMs that are all accessing that same shared set of objects.
having many VMs running but all kind of transactionally sharing the same large set of objects,
Gemstone also is a native code complier and so performs better than Squeak does.
one of the nice things about the Smalltalk world is that like the Java world and somewhat unlike the Ruby world, there is a bit of an obsession with keeping everything sort of in pure Smalltalk.
I think probably it's more common for people to use for example a relational database for storage, or kind of an external object database, like OmniBase one that is available for Smalltalk, there is GOODS which is kind of language agnostic object database that I wrote a client for Smalltalk a while ago.
Many companies first venture into mobile technology is providing BlackBerry e-mail access. Next, they often look to appplications for sales and other field employees, CRM, and business intelligence, such as performane dashboards. In short, mobile applications are integrating with corporate systems and other programs on a much more complex level.
One-fourth of companies are deploying CRM to handhelds,
We don't cover Palm in depth, since it's slipped to 2% of the smartphone market, says Gartner, while Symbian has half the world market, and the BlackBerry and iPhone make up about 70% of North America.
I have to admit, I found this article a little confusing : I didn't understand how to use a 'usage profile' to choose a platform for clients or servers.
The industry stewards have countered Apple's move with their own application stores, so there's a huge opportunity to write the "killer app" for one of several smartphone platforms.
As a security sandbox, the iPhone OS permits only one third-party application to run at a time, and not in the background.
adding some useful Bluetooth profiles that supported stereo headsets, data synchronization, or the ability to implement multiplayer games would be usefu
iPhone OS 3, that provides some of the missing features mentioned here, such as the A2DP profile for Bluetooth, voice recording, and copy-and-paste.
Have to learn Objective-C; is only smartphone platform that uses it.
embed navigation and GPS plotting into applications.
provide their own map content
The OS now supports the use of accessories connected to the iPhone either through its 30-pin docking connector or wirelessly via Bluetooth. Now that the device has been "opened", you can expect an entire ecosystem to build up around the device, much like the iPod has.
peer-to-peer connectivity using Bonjour
developers can now allow users, from within the application, to purchase and obtain new content
No voice dial.
A client-server mechanism provides access to low-level system resources, and in fact the kernel itself is a server that parcels out resources to those applications that need them. This transaction scheme allows applications to exchange data without requiring direct access to the OS space.
C/C++ for porting existing UNIX applications, and Java to port Java ME MIDlets. As mentioned previously, the software stack offers several run-times that offer application development using WRT widgets, Flash, and Python.
The primary programming language for the platform is Symbian C++,
Handango has managed the wide-scale distribution of Nokia applications. In February, Nokia announced plans to launch its Ovi Store, which sells applications, videos, games, pod-casts and other content, similar to Apple's App Store. The store will be accessible by Nokia S60 smartphones in May.
Non-standard Symbian C++ has steep learning curve, with special idioms to master.
Large number of Symbian APIs to learn, since it contains hundreds of classes and thousands of member functions.
Manages multiple e-mail Exchange e-mail accounts, along with support for POP3 and SMTP, and e-mails can have file attachments
FIPS 140-2 compliant, and supports AES or Triple DES encryption sessions via BlackBerry Enterprise Servers
BlackBerry Device Software has enhanced the capabilities of the platform with its own Java virtual machine (JVM), along with new Java classes that offer multitasking capabilities and UI enhancements to go beyond the capabilities of Java ME.
You can also take existing Java ME code and add specific BlackBerry classes to make a hybrid Java ME application
don't intermix MIDP 2.0 and BlackBerry API calls that perform either screen drawing or application management.
The catch to writing an application that uses BlackBerry API extensions is that it ties the application this smartphone. However, this is no worse than using the unique Java classes found in Google's Android.
Apple promotes the design goal that applications should accomplish one purpose.
no Flash support, and you can't download files.
For non-Exchange users, Apple's MobileMe online service, after some fits and starts in 2008, now supports the push of e-mails and changes to the calendar and contacts.
The iPhone 3G can work in tandem with Microsoft Exhange Server 2003 and 2007 to support enterprise operations.
Cocoa Touch is a subset of Apple's Cocoa,
Cocoa Touch components manage most of the writing to the screen and playing media, yet there are APIs exposed that let you access the accelerometer and camera.
Quartz engine is identical to the one found in Mac OS X
Only a select few higher-level frameworks have access to the kernel and drivers. If necessary, an application can indirectly access some of these services through C-based interfaces provided in a LibSystem library.
the SDK provides Dashcode, which is a framework based on a Web page composed of HTML and Javascript. You can use DashCode's simulator to write and test your web application. You can also use several other third-party frameworks to write web applications, and debug these with Aptanna Studio's tools.
Made by HTC, the G1 is the first smartphone using the Android platform.
e-mail program (which makes use of Google's Gmail), a mapping program (using the company's Google Maps), and a browser that uses WebKit, not Google's Chrome web browser
Android is not Java ME, nor does it support such applications
ability to both browse and manage multiple IM conversations. On the other hand, such heavy use of the smartphone's CPU shortens battery life significantly. Maybe Apple is on to something in limiting the number of applications that the platform can run.
On the positive side, the Android APIs support a touch interface (and the G1 has a capacitive touch screen), but not any multi-touch gestures.
copying text from the web pages is the browser isn't allowed
The advantage to Android's use of a different bytecode interpreter is that the DVM was designed so that multiple instances of it can run, each in their own protected memory space, and each executing an application. While this approach offers stability and a robust environment for running multiple applications, it does so at the expense of compatibility with Java ME applications.
Seasoned Java programmers will find the Android SDK an amalgam of Java SE and Java ME methods and classes, along with unique new ones
compile the Java code to generate Dalvik bytecode files, with an extension of .dex. These files, along with the manifest, graphics files, and XML files, are packaged into an .apk file that is similar to a Java JAR file.
The certificate that you use to generate the private key does not require a signing authority, and you can use self-signed certificates for this purpose.
The Developer Phone provides access to a shipping Android device without the cash outlay or contract contortions required when developing for the other platforms.
in February the site began supporting priced applications. Google allows developers to take seventy percent of the proceeds.
it's possible that you might pick up a malicious application before it is detected by the user community.
Open source, open platform: if you hate the mail program, some third-party is writing a better one.
Lengthy developer's overview of Symbian, Mac OS X iPhone, Blackberry, Android. This talks about the leading app platforms except Java ME and Windows Mobile, though it does explain how Blackberry and Symbian support Java ME.