Gnustep Presentation
Total Page:16
File Type:pdf, Size:1020Kb
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.