730 likes | 893 Views
Georg Heeg eK Baroper Str. 337 D-44227 Dortmund Tel: +49-231-97599-0 Fax: +49-231-97599-20. Georg Heeg eK Mühlenstr. 19 D-06366 Köthen Tel: +49-3496-214 328 Fax: +49-3496-214 712. Georg Heeg AG Riedtlistr. 8 CH-8006 Zürich Tel: +41-1-356 3311 Fax: +41-1-356 3312. Email: info@heeg.de
E N D
Georg Heeg eKBaroper Str. 337D-44227 Dortmund Tel: +49-231-97599-0 Fax: +49-231-97599-20 Georg Heeg eKMühlenstr. 19D-06366 Köthen Tel: +49-3496-214 328 Fax: +49-3496-214 712 Georg Heeg AGRiedtlistr. 8CH-8006 Zürich Tel: +41-1-356 3311 Fax: +41-1-356 3312 Email: info@heeg.de http://www.heeg.de
Georg Heeg Smalltalk Speaks .NETand Gets Mobile Bled26 August 2003
Overview • About us • Smalltalk today? • DotNETConnect • Smalltalk gets mobile
About us... • Founded 1987, head quarter in Dortmund,since 1996 in Zurich, since 1999 in Koethen/Anhalt • Consulting and training companyconcentrated around Smalltalk • Hotline Support, Maintenance, Bug-Fixes • New technologies for VisualWorks • Technology partner of Corporate Mission: Make Sophisticated Projectsa Success for the Customer!
Cooperation • Anhalt University of Applied Sciences in Koethen • Smalltalk as first programming language • Diploma thesis by Dirk Lannatewitz • Localization UI for VisualWorks • Finished 18 August 2003 • Diploma thesis by Katrin Nörenberg • German version of VisualWorks
Overview • About us • Smalltalk today? • DotNETConnect • Smalltalk gets mobil
Smalltalk 1972 • Xerox Palo Alto Research Center • Alan Kay, David Robson, Adele Goldberg • Goal: Dynabook • The personal Computer for everybody • Same size as a book • Same weight as a book • Dynamic • Available every time • Controllable by everybody
Smalltalk 1980 • Smalltalk 80 • 1981 first publication in Byte Magazine • Foundation of object orientation • Window system • Software development using browser • Debugger • Technical base of today’s VisualWorks
Smalltalk end of the 1980ies • Commercialization • Founding of Smalltalk companies • 1985 Digitalk • 1987 Georg Heeg • 1988 ParcPlace Systems • First application projects • The Analyst (Xerox/CIA) • ProfiSee (Ciba Geigy)
Smalltalk early 1990ies • Large Projects • JP Morgan • Texas Instruments • Daimler Benz • BMW • Deutsche Bank • Deutsche Bahn • UBS • Siemens • IBM puts out VisualAge to the market place • Smalltalk books are published
Smalltalk 1996-1999 • Java is the new buzz word • … • Smalltalk projects are put into operation • Users are happy
Smalltalk 1999-2002 • Cincom takes over ObjectStudio and VisualWorks • Founded 1968 • About 800 employees • From the beginning managed by Tom Nies • Located in Cincinnati, Ohio • Consolidation • Long term strategy • Smalltalk books get out of stock
Smalltalk 2003 • New Smalltalk companies show up • New platforms • Webserver • .NET • New markets • mobility • New Smalltalk books are published
New Book on Smalltalk GWV Fachverlage Erscheinungstermin: 12. September 2003
What is special about Smalltalk? • „Everything is an Object“ • „normal“ Objects • Windows • Numbers, strings, characters • Classes • Meta classes • Processes • Stack frames (contexts)
Smalltalk properties • Every object is unambiguously typed • Instance of a class • Variables are ungetyped • Information Hiding • Only access to objects by messages • Dynamic binding
Smalltalk Theory • Smalltalk is a modeling language • Smalltalk is able to represent every well formulated theory concept as a system of classes in a clear way => • Smalltalk is able to represent every computer science theory concept as a system of classes in a clear way
Fear of Smalltalk • Pretended arguments • Will no exist for a long enough time • Is slow • Is not company strategy BUT • Fear is often hazy and unspecific
What are the roots of the fear? • „Wat de Buer nich kennt, dat fret he nich“ [Low German: “Whatever the farmer does not know, he does not eat.” • More Marketing • More Sales • Smalltalk is different • Must be different to achieve the Smalltalk goals • You cannot build airplanes of steel
The fear of Smalltalk is justified • Intellectual requirements • Classes = concepts • To understand concepts is intellectually demanding • To develop concepts requires creativity • To dismiss concepts requires inner freedom • To bear criticism must be learned • and criticism will come!!!
Who has overcome the fear • Does not want to do anything else • Achieves a productivity, others can only dream of • Can spread out her/his own ideas • Feels as creator of a virtual world • … and travels to ESUG every year
Smalltalk is reasonably cheap • Ideal for Prototyping • Ideal for Extreme Programming • Ideal for Redesign • From the idea via the prototype to product quality • Without a technology break • In shortest time • Few Lines of Code • Proximity of concepts and software • Notions correspond to classes
One Software Base • From a server to a mobile device • Sun SPARC – HP UX – IBM AIX – SGI Irix • Linux 86 und PPC • Macintosh OS 9 und OS X • Windows 95, 98, ME, NT, 2000, XP, Server und Desktop • Windows CE 4.x • Windows Mobile for Pocket PC 2003 • Binary compatible
Smalltalk 2004 • There are two alternatives • All programming is done the old style in low salary countries • India, Bela Russia, Ukraine • Does know-how get out of our business control? • Programming is done VERY efficiently • Modeling in SMALLTALK • Only possible if Smalltalk adopts all possible worlds
Overview • Bout us • Smalltalk today and tomorrow! • DotNETConnect • Smalltalk gets mobile
Bill Gates about • „Wir glauben, dass .NET in der Lage ist, • dem einzelnen Anwender ganz neue Möglichkeiten zu eröffnen, • Unternehmen ungeahnte geschäftliche Perspektiven zu bieten • und uns allen erneut bewusst zu machen, welch ungeheures Potenzial im Internet steckt.“
What is .NET according to Microsoft Marketing? • Microsoft Platform for XML-Web Services • Connects in a uniform und personalized way • Information • Devices • Users
What is .NET technically? • Development environment for Windows • VisualStudio .NET 2003 • Object oriented execution platform • Common Language Runtime • Class library • .NET Framework • ASP .NET, ADO .NET, Windows Forms, … • Interface for complex High-Level-Transactions • Web-Services
What is .NET • Microsoft promotes WebServices as Internet based Strategy since 2001 • Actually development gains more importance with the goal: • Unifies programming • Same features in all languages • Unified API • Unified platform • Simplifies deployment and maintenance • Security
.NET: Future Platform of Windows World • Replaces COM, OLE, DDE • Replaces native programming • Unifies programming languages (C++, Java, VB, …) • .NET simplifies heavily Windows programming
Architectural Comparison .NET VisualWorks Web Services Web Forms Windows Forms Open talk Web Toolkit Basis image Data and XML EXDI/Lens and XML Framework VisualWorks Basisimage CLR VM OS Platform OS Platform
Is .NET Planned as One-Way-Road? • Interfaces mainly serve for integration of Legacy components • Extensions of existing systems by .NET components is not intended • Soft pressure towards migration of existing systems into .NET • A way back is not provided
Java or .NET • Java tries to dominate the world • Anything else is ignored • All concepts are newly invented and named differently • .NET tries to dominate the world • Anything can be integrated in .NET • .NET specifics can only be used from inside .NET
Smalltalk and .NET (Theory) • Repetition: • Smalltalk is able to represent every well formulated theory concept as a system of classes in a clear way • Smalltalk is able to represent every computer science theory concept as a system of classes in a clear way => • Smalltalk is able to represent .NET as a system of classes in a clear way
Smalltalk and .NET (Marketing) • All future development of Microsoft will happen in .NET • Windows is dominant platform for VisualWorks Client Applications • Windows is a platform for VisualWorks Server Applications • Thus we consider a preoccupation with .NET as (compellingly) necessary
Smallscript alias S# + high acceptance in Windows community + First Class Citizen • Low acceptance in Smalltalk community • Loss of platform independence • Restriction of the language (.NET makes all languages being the same) • Quality of development • Breach with existing application base
.NET Integration: Bytecode • Technically not investigated • Open whether can be put into practice at all without massive restrictions • static typing of CLR
Web-Services • Available in VisualWorks since June 2002 • High strategic advantage • Integration on the level of • Applications • Systems • Enterprises • Standardized • XML, SOAP, WSDL, UDDI
Web-Services • Not suitable for integration of • Local components • Client-server • Operating system services • “Nobody would ever want to print a Word document using Web-Services”
DotNETConnect: Goals • Smalltalk and .NET coexist side by side • .NET objects will be usable as Smalltalk objects • Light weight solution • Easy to use • Time to Market • No technical knowledge about .NET required • All properties of Smalltalk are maintained • Favorable cost-benefit ratio
DotNETConnect: Concepts • Smalltalk as Client, .NET as Server • Automatic generation of Smalltalk classes for .NET classes • Separation of .NET generated classes from communication medium • Web-Services • Managed Extensions for C++ • COM • Remoting • Garbage Collection coupled with .NET
DotNETConnect: Properties • No adaptation of .NET Components necessary • Tool based generation of all necessary Components in source code • Complete access on generated Code • Components for .NET base classes as part of DotNETConnect available • mscorlib, data, xml
VisualWorks .NET VisualWorks object stub .NET Object Registry Registry VisualWorks connection stub Proxy (C#, C++) Communication Channel (DLL, COM, Remoting) DotNETConnect: Architecture Generated Code installed Component
Stub Classes • All Stub classes are subclasses of DotNETObject • Class methods • static methods • Access to static properties • Constructors • Instance methods • Non static methods • Access to non static properties
VisualWorks .NET MscorlibStub MscorlibExternalInterface MscorlibProxy Communication channel aDateTime objectId aDateTime objectId Registry objectId objectId Registry objectId objectId aTimeInterval objectId aTimeInterval objectId Two Stub-Objects with DLL Channel
Example: Stub Method (generated) AddDays: value "This is generated code for the .NET method: System.DateTime AddDays (System.Double value)" | returnData | returnData := self executionStub DateTime_AddDays: self objectId with: value. ^self register: returnData
Example: Wrapper Method (generated) DateTime_AddDays: objectID with: value "execution stub method for the .NET Method System.DateTime AddDays (System.Double value)" | errorCode containerPointer objectPointer | containerPointer := self externalInterface return_type gcMalloc. objectPointer := objectID gcCopyToHeapUnicode. errorCode := self externalInterface DateTime_AddDays: containerPointer with: objectPointer with: value. errorCode < 0 ifTrue: [self GetLastError signal] ifFalse: [^self getDataFrom: containerPointer]
Marshaling • Encoding is done using (Unicode-) strings