Working With Tiger Technologies
Juanvaldes writes "Apple has put online more developer-oriented information about Tiger. There are also detailed articles about Spotlight, Dashboard, 64-bit apps and Automator."
← Back to Stories (view on slashdot.org)
I just got my first Mac, an iBook G4, and have been amazed by it so far. the level of integration is astounding. everything Just Works(tm) and also Plays Nice(tm). for example, everything can be voice-controlled, and the voice control actually works and doesn't need training, and when I install a new app ("Firefox") it automagically understand that app.
Having seen the Macworld Keynote, Tiger looks very good. I'm mostly interested in Dashboard. Seems like a good step forward (I love Expose). Spotlight also seems great, though the number of times I actually use a local search is tiny.
Apple keeps getting better and genuinely innovating, whereas MS seems to just buy, rebrand, then move on when it's Good Enough(tm). I'm sorry if that sounds flamebait, but it's The Truth(tm).
It's interesting that there's no mention of Java 1.5, even though it's in the developer preview. Maybe the Java upgrade will slip to 10.4.1?
i have two nice dells and dual 18" flat panel monitors. i used to think i had a really kick ass system. windows XP, btw.
i got a g4 powerbook in november.
my PC's are dormant. all my development is done on the mac. i just love using it.
i can't wait for tiger.
now i know why there are apple fanatics.
Of the apps listed in the FA, Automater appears to be the only one that's really interesting. The Widget thing is already available with Konfabulator and Desktop search is also available from a number of sources. This isn't to say that Apple won't make each of these better. However, I think the breakthrough, killer app is Automater. Sure, you can script events to some extent or another either with the limited capabilities of operating systems or to a greater extent with 3rd party apps, but the ability to build event scripts with XML and/or HTML sounds freakin' awesome.
It is an addition to the Cocoa framework and to Xcode which supports a very nice object persistence layer. In a nutshell Cocoa uses the MVC (Model View Controller) design pattern. TO develop an app, one defines ones application data as model objects, build an interface of windows, widgets, etc, and provide controllers which mediate communication between the user and the data model.
In Panther, Apple introduced "Bindings" which obviated the need to actually write most controller objects. Using bindings, the developer can associate object relationships (targets, and actions) between the View and Model layers by essentially using path names. This still enables a clean isolation between the interface and the application data layers, but requires little code (or sometimes none).
In Tiger they added "Core Data". This allows the developer to describe their model data objects, and the object relationships. At run time, using this model description, the model objects are associated with serialized objects on disk in:
XML file format
binary file format
SQLite-based database format
This repository of frozen objects is lazily loaded, and only those objects which are actually required are unarchived and made live. Think NeXT EOF redux, but easier and not tied to WebObjects.
XCode is integrated with a graphical display that lets you explore the object model graph, and also graph the layout of your source code.
This stuff is very sweet. I've been playing with it off and on, and definitely miss Tiger whenever I need to boot back into Panther. (Yes, it's a legal copy. No I won't break my NDA.)
I was similarly converted to Apple, but I keep a linux box around and use it quite frequently. But thanks to the Mac, I now do everything in GNUStep.
I'm actually amazed that OS X hasn't spurred a renaissance for GNUStep. I figured all the "I like MacOS, but I don't want to pay for Apple hardware" weenies would be hard at work getting around this by using GNUStep as a basis for their Free take-off of OS X instead of sticking with Gnome and KDE (both of which are just Free take-off of Windows in my book).
SQLite isn't just there for spotlight. CoreData is an interesting set of tools that Apple never really publicized much. Basically, it looks like an API for storing cocoa and carbon data structures into files such that there are two copies (a la the iTunes database). One copy is XML and the other is in SQLite format. The two copies of data are kept synced by CoreData. The purpose behind this is to make an application's files extremely easy to read and manipulate from 3rd party apps but also not have to deal with the overhead of an XML file with 20,000 dictionaries.
It seems like a really cool idea and it has been working great in the iTunes codebase for some time now. Does any OS do something like this already? It seems to me like an obvious solution to a very common development problem. Should really cut down on development time.
I find it interesting that SQLite is part of Tiger. I'm curious as to how useful it will be. I'm sure I'd want to keep OS info away from Dev info, but I'm curious as to whether it'll replace mySQL at all.
:)
Does BDB or GDBM replace MySQL? Does XML-files replace MySQL?
SQLite is only a tiny embeddable library providing a fast SQL-interface to your data-files. It is not meant to be used as a RDBMS replacement.
In contrast to MySQL it actually does support procedures and triggers though.
My other account has a 3-digit UID.
Many comments seem to think that Spotlight is "just another desktop search". Ho-hum. Of course it is that, but I think what will be killer is its integration into the system. The Steve Jobs demos are cool, but they are not very focused on what I think is the real wow - Smart Folders in the Finder. I truly believe these will revolutionise the way people manage files. If you've used iTunes for any length of time you'll find the smart playlists absolutely invaluable. Having that at the Finder level will be incredible. It'll make the "recent documents" and "recent applications" menu look pretty lame. I think after a while no-one will be able to understand how the hell we managed with only fixed folders all these years.
Your statements are patently false.
Situations where X only runs on 10.2 and up, or Y only runs on 10.3 and up result from adding new functionality, not from breaking old functionality. Frameworks in Macos X support multiple simultaneous versions without conflict.
The reason that so many new packages require new versions of the OS is that the development tools and libraries are improving. Targeting 10.1 or 10.2 requires that developers forgo functionality which can dramatically reduce their effort. For instance using Cocoa Bindings (introduced in Panther) a developer can avoid writing much common code. The authors of Delicious Library say that when they first read about Cocoa Bindings they decided to give it a try:
WebKit, Array Controllers, and scores of other new objects have been introduced over the past few years. In each case the general result is deriving more functionality out of far less code.
This is not the result of Apple un-fucking things. This is the result of Apple producing software that improves the system by adding new functionality that is easier for both developers and end-users.
Apple typically releases free updates and security patches for several years. Jaguar (10.2) came out in 2002, the last major upgrade 10.2.8 was released in mid 2003, I see that 10.2.8 was still covered by the security update several weeks ago.
It is clear that you don't know what you are talking about.
I'm guessing that much of that angst has be channeled into PearPC
I agree with your sentiment, but I think that Gnome and KDE are too well entrenched for GNUstep to have much of an impact. There's Simply GNUstep of course...
But I suspect GNUstep is tarnished for several reasons.
Cocoa is a minority platform with even fewer open source developers. And how many people know objective-c? The Mac has a long history of quality shareware; on the whole the idea of giving code away for free never caught on as with Linux. Those with skills in such a niche area are no doubt finding lucrative opportunities to sell their spare-time efforts! :)
Providing a clean-room implementation of technologies is dependant on their being killer-apps to run.
In the case of haiku, it's implementing a much cherished discontinued platform.
In the case of wine, it's running Windows apps without Windows.
In the case of classpath, it's implementing a JVM without Sun's restrictions and support on every platform.
In each case these projects aim to provide API AND binary compatibility. Achieving binary compatibility with OSX would be comparatively more difficult given that Cocoa is one of a number of technologies which might also need to be emulated.
Plus, most of us do without the niceties of OSX. Those priveleged few that do have Macs are satisfied with their choice of hardware & software, so to re-implement the wheel isn't a high priority.
Finally are there any killer opensource Cocoa apps whose equivalents don't exists in the X11 world? For example, if Apple were to donate the rest of the Safari code to the community, as Netscape did with Mozilla, it would provide a tremendous example of a large-scale Cocoa app. This would perhaps attract developers to the platform. Plus, it might spur people on to implement the missing bits in GNUstep.
This stuff looks pretty nifty:
Along with improvements to the GUI, Xcode 2.0 will ship with GCC 4.0 which features a new C++ Parser and several code generation improvements including auto-vectorization. While hand-tuning Velocity Engine code can get you the maximum performance from the G4 and G5 processors, now you can have GCC do the heavy lifting for you. You'll benefit from this without any extra effort, with auto-vectorization in GCC bringing anywhere between a 4X and 14X performance improvement to code that works with arrays of data.
AltiVec support without having to write any optimized code...sounds like a winner to me.
Well, I am, as you wrote it, "a weenie" - I don't want to pay my 2 months salary for a freaking computer (I live in Poland and in fact my income is quite above average), so I only dream about having a Mac. Well, now with Mac Mini and new prices of iBooks I started to count money maybe to buy one, but back to the point:
I am a long Wmaker user and I tried GNUStep few times, but it simply doesn't work for me. I always do everything the wrong way there, and the menu in the upper left corner just annoys me. Mail.app (or what is it called) reminds me of a mailer program from CDE somewhere in the late nineties. And the whole thing is just ugly. OK, icons are nice, but widgets are terrible: scroll bars, radio button and so on...
Anyway, so far it was always like this: new GNUStep version announcement, apt-get install gnustep, a week or two of futile attempts to like it, apt-get remove gnustep and back to my combo of wmaker/sylpheed/firefox (now replaced by kde 3.3).
Well, maybe not to insightful, but GNUStep has a really long road ahead to be usable to me. And no, I am not a programmer so I am not able to contribute. So maybe I should quit complaining?
But you are right, it would be nice if more of the MacOS X goodness was available to us in the cheap x86 world
Raf
Any UNIX command or script seems to imply Python support to me...
Cig? No, thank you.
The important part is Any UNIX command or script, the remainder are just examples. Look at the code snippet right below it, there is a standard system call, executing a command.
No problem with calling a Python script from that.
The potential exists, but in order for the widget to do damage it would have to be downloaded and installed by the user, like any other trojan horse. If the widget wants to do anything outside of your home directory, the user will get a dialogue asking for an admin password.
This will require a certain level of responsibility from users, but no more so than any compiled program.
Then again, making it all javascript-shell script friendly, on top of making it look pretty is dangerous; it makes trojans easier to write and more tempting to the victims (nobody would ever download a .sh file that claimed to output stock quotes or search Amazon.com, but they would certainly download a widget that advertised such features).
Don't blame me, I voted for Baltar.
According to the article's link, it does both. I quote:
In Tiger, Cocoa can manage your data objects themselves through the power of Core Data, providing automatic undo/redo support, additional user interface synchronization, and data consistency, correctness, and speed enhancements when it's time to write to disk.
Core Data gives you the ability to create a description of your data objects. Once defined, Core Data handles most of the heavy work of managing your data objects, both in-memory and on-disk. This allows you to focus on application logic and avoid the infrastructure work. In short, Core Data is a model-driven object management graph and persistence framework.
In Tiger, Core Data will support three different kinds of files for storage of data:
A text-based XML file format
A better performing binary file format
A high-performance, SQLite-based database file format
Each of these file formats has its strengths. The XML file format is a good choice during the development of an application as it allows you to peek inside the file and see what is going on. The SQLite format will often be the best choice for desktop applications because of its performance characteristics.