Dispelling Cross-Platform Software Development Myths Cross-Platform GUI Programming with wxWidgets Kevin Hock August 2005
Overview Who am I? What is cross-platform development? Why cross-platform? Cross-platform myths Recap wxWidgets wxWidgets book
Who am I? Miami University (OH) Visiting Instructor Founded BitWise Communications Created BitWise IM wxWidgets developer wxWidgets book co-author
What is cross-platform? Applications for multiple platforms Platform-agnostic API Write once, compile/run everywhere GUI layout Advanced classes
Why cross-platform? Heterogeneous world Growing Linux / OS X markets Increased market share Increased customer satisfaction Not locked to a platform
Myth #1: Slow applications wxWidgets is a thin wrapper CPU speeds increasing Few real-time applications Hand in hand with slow, is… Mahogany Mail (Linux)
Myth #2: Large libraries required Thin wrapper Statically link wxWidgets Avoid rpm / so / dll issues Compare sizes on Windows: Library Raw MB Zip MB Java 30+ 15 GTK+ 9+ 4 QT 4+ 2 wxWidgets <1 <1/2 Bulky libraries also mean…
Myth #3: Poor mobile support Windows CE GPE using GTK+ wxX11 uses only X Palm OS 6 Adjust window layouts (small) So many devices, it must have… Life! on GPE
Myth #4: Non-native appearance Uses OS widgets, not a skin If it’s native on all platforms, then don’t you have…
Myth #5: Awkward window layout Sizers adapt to Fonts Languages Widget sizes Window sizes Sounds great, what about…
Myth #6: Non-standard dialogs wxWidgets uses standard OS dialogs Non-native, used by another library Native, used by wxWidgets What if it doesn’t exist? Doesn’t that lead to…
Myth #7: Lowest common denominator Generic widgets bridge gaps Platform-specific classes (wxWebkit) Custom-drawn application widgets Platform-specific code But wouldn’t this factoring still lead to… Audacity Sound Editor (Linux)
Myth #8: Have to learn OS details wxWidgets abstracts – common API wxMenuBar, About / Preferences wxSound wxConfig wxSingleInstanceChecker wxLaunchDefaultBrowser Wow, all this must be really complicated…
Myth #9: Complicated, unstable “More often than not wxWidgets gets out of the way of the programmer.” Well structured, easy to use API Excellent documentation 12 years of evolution Worldwide community Lists, newsgroups, forums, wiki What about support when I have a problem?
Myth #10: Locked into one vendor Open source Worldwide community Cannot be discontinued Not a company, no profit motive Community support wxCode: community extensions But aren’t I still…
Myth #11: Locked into a technology Standard C++, no extensions Use standard C++ libraries Library-agnostic New technologies embraced Free upgrades to new technologies! Old New Motif GTK GTK+ GTK+ 2 Win16 Win32 Carbon Cocoa Vista? But I’m still…
Why choose wxWidgets? Avoids common cross-platform issues Open-source 12 years of evolution Worldwide community Many supported platforms Advanced features
Who uses wxWidgets? Open source projects Small businesses Large organizations: AMD AOL (Communicator) Carnegie-Mellon University Grisoft (AVG Anti-Virus) Lockheed Martin NASA OSAF - Chandler Xerox OSAF’s Chandler (Linux)
What’s in the book? Concepts & overviews Class descriptions Code examples Discussions Project setup guides CD-ROM: code & utilities
Conclusion Powerful cross-platform framework Heterogeneous world Target additional platforms Agile movement among platforms wxWidgets book Questions?