26
Dispelling Cross-Platform Dispelling Cross-Platform Software Development Software Development Myths Myths Cross-Platform GUI Cross-Platform GUI Programming with Programming with wxWidgets wxWidgets Kevin Hock Kevin Hock August 2005 August 2005

Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

Embed Size (px)

Citation preview

Page 1: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 2: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 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

Page 3: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 4: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 5: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 6: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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)

Page 7: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 8: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 9: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 10: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

Myth #4:Myth #4:Non-native appearanceNon-native appearance Uses OS widgets, not a skinUses OS widgets, not a skin

Page 11: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 12: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 13: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 14: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

Myth #5:Myth #5:Awkward window Awkward window layoutlayout Sizers adapt toSizers adapt to

– FontsFonts– LanguagesLanguages– Widget sizesWidget sizes– Window sizesWindow sizes

Page 15: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 16: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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)

Page 17: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 18: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 19: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 20: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 21: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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?

Page 22: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 23: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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)

Page 24: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Page 25: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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

Page 26: Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005

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?