Dispelling Cross-Platform Software Development Myths
description
Transcript of Dispelling Cross-Platform Software Development Myths
Dispelling Cross-Platform Dispelling Cross-Platform Software Development Software Development
MythsMyths
Cross-Platform GUI Cross-Platform GUI Programming with wxWidgetsProgramming with wxWidgets
Kevin HockKevin Hock
August 2005August 2005
OverviewOverview
Who am I?Who am I? What is cross-platform What is cross-platform
development?development? Why cross-platform?Why cross-platform? Cross-platform mythsCross-platform myths Recap wxWidgetsRecap wxWidgets wxWidgets bookwxWidgets book
Who am I?Who am I?
Miami University (OH)Miami University (OH) Visiting InstructorVisiting Instructor Founded BitWise CommunicationsFounded BitWise Communications Created BitWise IMCreated BitWise IM wxWidgets developerwxWidgets developer wxWidgets book co-authorwxWidgets book co-author
What is cross-What is cross-platform?platform? Applications for multiple Applications for multiple
platformsplatforms Platform-agnostic APIPlatform-agnostic API Write once, compile/run Write once, compile/run
everywhereeverywhere GUI layoutGUI layout Advanced classesAdvanced classes
Why cross-platform?Why cross-platform?
Heterogeneous worldHeterogeneous world Growing Linux / OS X marketsGrowing Linux / OS X markets Increased market shareIncreased market share Increased customer satisfactionIncreased customer satisfaction Not locked to a platformNot locked to a platform
Myth #1:Myth #1:Slow applicationsSlow applications wxWidgets is a thin wrapperwxWidgets is a thin wrapper CPU speeds increasingCPU speeds increasing Few real-time applicationsFew real-time applications
Mahogany Mail (Linux)
Myth #2:Myth #2:Large libraries Large libraries requiredrequired Thin wrapperThin wrapper Statically link wxWidgetsStatically link wxWidgets Avoid rpm / so / dll issuesAvoid rpm / so / dll issues Compare sizes on Windows:Compare sizes on Windows:
LibraryLibrary Raw MBRaw MB Zip MBZip MB
JavaJava 30+30+ 1515
GTK+GTK+ 9+9+ 44
QTQT 4+4+ 22
wxWidgetswxWidgets <1<1 <1/2<1/2
Myth #3:Myth #3:Poor mobile supportPoor mobile support
Windows CEWindows CE GPE using GTK+GPE using GTK+ wxX11 uses only wxX11 uses only
XX Palm OS 6Palm OS 6 Adjust window Adjust window
layouts (small)layouts (small)
Life! on GPE
Myth #4:Myth #4:Non-native appearanceNon-native appearance Uses OS widgets, not a skinUses OS widgets, not a skin
Myth #5:Myth #5:Awkward window Awkward window layoutlayout Sizers adapt toSizers adapt to
– FontsFonts– LanguagesLanguages– Widget sizesWidget sizes– Window sizesWindow sizes
Myth #6:Myth #6:Non-standard dialogsNon-standard dialogs wxWidgets uses standard OS wxWidgets uses standard OS
dialogsdialogs Native, used by wxWidgetsNon-native, used by another library
Myth #7:Myth #7:Lowest common Lowest common denominatordenominator Generic widgets Generic widgets
bridge gapsbridge gaps Platform-specific Platform-specific
classes (wxWebkit)classes (wxWebkit) Custom-drawn Custom-drawn
application widgetsapplication widgets Platform-specific Platform-specific
codecodeAudacity Sound Editor (Linux)
Myth #8:Myth #8:Have to learn OS Have to learn OS detailsdetails wxWidgets abstracts – common wxWidgets abstracts – common
APIAPI wxMenuBar, About / PreferenceswxMenuBar, About / Preferences wxSoundwxSound wxConfigwxConfig wxSingleInstanceCheckerwxSingleInstanceChecker wxLaunchDefaultBrowserwxLaunchDefaultBrowser
Myth #9:Myth #9:Complicated, unstableComplicated, unstable ““More often than not wxWidgets More often than not wxWidgets
gets out of the way of the gets out of the way of the programmer.”programmer.”
Well structured, easy to use APIWell structured, easy to use API Excellent documentationExcellent documentation 12 years of evolution12 years of evolution Worldwide communityWorldwide community Lists, newsgroups, forums, wikiLists, newsgroups, forums, wiki
Myth #10:Myth #10:Locked into one Locked into one vendorvendor Open sourceOpen source Worldwide communityWorldwide community Cannot be discontinuedCannot be discontinued Not a company, no profit motiveNot a company, no profit motive Community supportCommunity support wxCode: community extensionswxCode: community extensions
Myth #11:Myth #11:Locked into a Locked into a technologytechnology Standard C++, Standard C++,
no extensionsno extensions Use standard C+Use standard C+
+ libraries+ libraries Library-agnosticLibrary-agnostic New technologies New technologies
embracedembraced Free upgrades to Free upgrades to
new new technologies!technologies!
OldOld NewNew
MotifMotif GTKGTK
GTK+GTK+ GTK+ 2GTK+ 2
Win16Win16 Win32Win32
CarboCarbonn
CocoaCocoa
Win32Win32 Vista?Vista?
Why choose Why choose wxWidgets?wxWidgets? Avoids common cross-platform Avoids common cross-platform
issuesissues Open-sourceOpen-source 12 years of evolution12 years of evolution Worldwide communityWorldwide community Many supported platformsMany supported platforms Advanced featuresAdvanced features
Who uses wxWidgets?Who uses wxWidgets?
Open source projectsOpen source projects Small businessesSmall businesses Large organizations:Large organizations:
– AMDAMD– AOL (Communicator)AOL (Communicator)– Carnegie-Mellon Carnegie-Mellon
UniversityUniversity– Grisoft (AVG Anti-Grisoft (AVG Anti-
Virus)Virus)– Lockheed MartinLockheed Martin– NASANASA– OSAF - ChandlerOSAF - Chandler– XeroxXerox
OSAF’s Chandler (Linux)
What’s in the book?What’s in the book?
Concepts & overviewsConcepts & overviews Class descriptionsClass descriptions Code examplesCode examples DiscussionsDiscussions Project setup guidesProject setup guides CD-ROM: code & utilitiesCD-ROM: code & utilities
ConclusionConclusion
Powerful cross-platform frameworkPowerful cross-platform framework Heterogeneous worldHeterogeneous world Target additional platformsTarget additional platforms Agile movement among platformsAgile movement among platforms wxWidgets bookwxWidgets book
Questions?Questions?