GNUSTEP GNUstep: What is it ?
• A powerful object-oriented development environment: • A set of cross-platform libraries for developing applications (text, graphic, script, web, etc.) • Development tools and applications • A free implementation of the OpenStep specifications • A community :-)
gnustep.org Once upon a time...
• NeXT and SUN collaborated in 1994 to create an open API: OpenStep, extending on the famous NeXTSTEP environment and API • Soon, SUN moved its focus on a new toy, and NeXT was brought by Apple in order to create MacOS X • In the meantime, the Free Software Foundation started a free implementation of the OpenStep specification
gnustep.org What’s interesting ?
• GNUstep is crossplatform (Linux, *BSDs, Windows, OSX...) and compatible with Cocoa (Apple) • Objective-C is a really nice, simple yet powerful language, and you can transparently reuse C libraries (and soon with gcc 4, C++ libraries as well) • You’ve got Distributed Objects for free ! • GNUstep provides really powerful development tools like GORM, that really speed-up the development
gnustep.org Languages
• Objective-C is the main language • but bindings exists for other languages: • Java, Ruby, Scheme, Smalltalk • with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ?
gnustep.org One-minute course on Objective-C Objective-C ??
• A strict superset of the ANSI C -- a dozen new keywords and only one syntactic addition • Simply provides what’s needed to have real object-oriented features, not just class-oriented features: messages, late bindings, dynamic loading, introspection, categories, etc. • Very inspired by Smalltalk ! • “When I invented the term Object-Oriented, I didn’t have C++ in mind” -- Alan Kay
gnustep.org Interface
@interface MyObject : NSObject { NSString* name; } - (NSString*) name; - (void) setName: (NSString*) str; + (void) print: (id) anObject with: (NSString*) aMessage; @end
gnustep.org Implementation
@implementation MyObject
- (NSString*) name { return name; }
- (void) setName: (NSString*) str { ASSIGN (name, str); }
+ (void) print: (id) anObject with: (NSString*) aMessage { NSLog (@”%@: %@”, aMessage, anObject); }
@end
gnustep.org Usage
MyObject* anObject = [[MyObject alloc] init];
[anObject setName: @”Toto”];
[MyObject print: anObject withMessage: @”My object’s name is”];
My object’s name is: Toto
gnustep.org GNUstep components GNUstep’s ArGNcUhitecturestep Architecture
GNUstep Applications
GNUstep Core Other Frameworks
Application Kit Foundation Kit (GUI) (Base) Database Kit
Graphics Web Deployment Backend (Back) StepTalk Scripting
Native Graphics Operating ... System System Legend Hosting Operating System Framework (Linux, BSD, MS Windows, OS X, ...)
Bundle gnustep.org Application
Foreign Slide level: Introduction GNUstep – Overview, Stefan Urbanek, 2004 GNUstep Frameworks
• Foundation • AppKit • GDL2: EOF 4.5 clone • SQLClient • GSWeb : WebObjects clone • StepTalk : script engine
gnustep.org DevelopmentGNUstep Aprocesspplication Development Process
Developer
Development Applications
Gorm User Interfaces
Development Tools
Project Center Make Environment Makefiles (GNUstep-Make)
GCC
Source Code
Make
Other Resources (Images, Sounds,...) Legend
Application Information
GNUstep
Foreign Slide level: Introduction GNUstep – Overview, Stefan Urbanek, 2004
gnustep.org ProjectCenter
• The GNUstep IDE • Manage your project’s files (source code, images, etc.) • Create the makefiles • Give you a nice GUI to set up options..
gnustep.org
GORM GNUstep Object Relationship Modeller
• At first glance, it’s just another GUI builder... • ...with nice additions like guidelines, etc. • But it’s much more than that : it’s really an object relation modeller • a “gorm” file is the serialization of the object’s graph • Check a video demo on http://www.gnustep.org/experience/ DevelopmentDemonstration.html or come to the GNUstep booth/ devroom for a demo
gnustep.org
Related projects Frameworks
• Pantomime: mail management (pop3,imap,smtp..) • NetClasses: asynchronous network library • Addresses: address book management • BookmarkKit: bookmark management • Tryst: RendezVous implementation • CameraKit: libgphoto wrapper • SlideShowKit: includes slideshows in your application • etc.
gnustep.org Applications
• Not many apps for the moment (around sixty), but growing fast • Even with so few applications, you can experience the interest of having applications really cooperating (check the live CD or go the booth for a demo) • examples...
gnustep.org
Desktops !
• Different projects to create a desktop based on GNUstep libraries: • Backbone : the goal is to implement a NeXTSTEP-like desktop • Étoilé, Garma : wants to push the enveloppe :)
gnustep.org LiveCD: GNUSTEP
• http://livecd.gnustep.org NU G o f
n o i fi t i c a e t s p n e p m t e l e S p n n e i m o p
f r O i e S t e a a c e t h
28.05.2004, 16:33
1 gnustep.org
Unbenannt-2.indd
T
E P Gallery
Future Future...
• Amelioration of the graphic backends (Cairo, OpenGL ...) • A better Windows backend • more GNUstep applications and desktop-related stuff • Better integration with KDE/GNOME
gnustep.org gnustep.org