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 Mahogany Mail (Linux) Myth #2: Large libraries required Thin wrapper Statically link wxWidgets Avoid rpm / so / dll issues Compare sizes on Windows: Library Java Raw MB 30+ Zip MB 15 GTK+ QT wxWidgets 9+ 4+ <1 4 2 <1/2 Myth #3: Poor mobile support Life! on GPE Windows CE GPE using GTK+ wxX11 uses only X Palm OS 6 Adjust window layouts (small) Myth #4: Non-native appearance Uses OS widgets, not a skin Myth #5: Awkward window layout Sizers adapt to – Fonts – Languages – Widget sizes – Window sizes Myth #6: Non-standard dialogs wxWidgets uses standard OS dialogs Non-native, used by another library Native, used by wxWidgets Myth #7: Lowest common denominator Generic widgets bridge gaps Platform-specific classes (wxWebkit) Custom-drawn application widgets Platform-specific code Audacity Sound Editor (Linux) Myth #8: Have to learn OS details wxWidgets abstracts – common API wxMenuBar, About / Preferences wxSound wxConfig wxSingleInstanceChecker wxLaunchDefaultBrowser 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 Myth #10: Locked into one vendor Open source Worldwide community Cannot be discontinued Not a company, no profit motive Community support wxCode: community extensions 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+ Win16 Carbon Win32 GTK GTK+ 2 Win32 Cocoa Vista? Why choose wxWidgets? Avoids common cross-platform issues Open-source 12 years of evolution Worldwide community Many supported platforms Advanced features Who uses wxWidgets? OSAF’s Chandler (Linux) Open source projects Small businesses Large organizations: – AMD – AOL (Communicator) – Carnegie-Mellon University – Grisoft (AVG Anti-Virus) – Lockheed Martin – NASA – OSAF - Chandler – Xerox 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?