Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Recommendation for multi-platoform development

Recommendation for multi-platoform development

Scheduled Pinned Locked Moved The Lounge
c++csharpdesignlinuxsales
17 Posts 14 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Brigg Thorp

    Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

    V Offline
    V Offline
    V 0
    wrote on last edited by
    #4

    Java is famous for its platformindependency. C# and C++ are very windows based. If you're familiar with C# you'll find java very easy to learn and it has better apis :-). It is however slower then C++ and C#. good luck. No hurries, no worries.

    J Z F 3 Replies Last reply
    0
    • V V 0

      Java is famous for its platformindependency. C# and C++ are very windows based. If you're familiar with C# you'll find java very easy to learn and it has better apis :-). It is however slower then C++ and C#. good luck. No hurries, no worries.

      J Offline
      J Offline
      Judah Gabriel Himango
      wrote on last edited by
      #5

      V. wrote: If you're familiar with C# you'll find java very easy to learn and it has better apis Better APIs? Well, that's arguable. I used to use Java all the time and it seems to me the DNF is more organized, carefully laid out and thought through before design, whereas I do not see those qualities in the Java class libraries. But hey, I guess we all have opinions on these things.

      Tech, life, family, faith: Give me a visit. I'm currently blogging about: He has a funny face. And he's my son. Judah Himango

      1 Reply Last reply
      0
      • B Brigg Thorp

        Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

        M Offline
        M Offline
        Mike Dimmick
        wrote on last edited by
        #6

        My understanding is that OS X has a number of different programming interfaces available. The main choice for native code developers is between Carbon and Cocoa. Carbon applications can be written solely in C or C++; Cocoa, I believe, requires Objective-C or something Apple terms 'Objective-C++', which I've not heard of before. I'm not sure if you can link Objective-C and C++ in the same program. You will see religious diatribes if you use Carbon, based on Microsoft's experience with Word and the other Office apps. According to the zealots, Cocoa is the One True Way of OS X development. I think there are some features in Cocoa that aren't in Carbon. For a comparison by a Microsoft programmer working on Word, see here[^]. You can use cross-platform toolkits, but your app will never feel truly at home on any platform if you use one, IMO. For example, try using Ethereal on Windows, which uses Gtk, or most Swing-based Java apps. Again, Apple zealots will string you up and hang you out to dry - rightly, this time - if you don't follow the platform's rules. This suggests that you won't be porting, but rewriting, your UI code. If your UI code is a thin layer over an underlying abstracted data model, you won't have so much work to do - you might not have to do that much to the data model. Bear in mind that you're not just crossing platforms, you're also crossing processor architectures - and PowerPC is stricter than x86. You might have to ensure that your data structures are correctly aligned, or you might get alignment faults. C# is obviously tied to the Common Language Infrastructure. There are alternate implementations of the CLI such as DotGNU Portable.NET[^] and Mono[^]. Of the two Mono seems further on and more stable. In both cases you're likely to suffer the Java Swing problem of slow UI, if you use System.Windows.Forms for your UI, since I believe a lot of the drawing is done from managed code, rather than using the native controls as Microsoft's implem

        1 Reply Last reply
        0
        • V V 0

          Java is famous for its platformindependency. C# and C++ are very windows based. If you're familiar with C# you'll find java very easy to learn and it has better apis :-). It is however slower then C++ and C#. good luck. No hurries, no worries.

          Z Offline
          Z Offline
          zoid
          wrote on last edited by
          #7

          C++ is not windows based ... Linux code is almost all C/C++. Only the WIN32/MFC libraries for VC++ are windows based. If you want to have portable GUI code then you will need a toolkit like QT as was mentioned in another post.

          1 Reply Last reply
          0
          • V V 0

            Java is famous for its platformindependency. C# and C++ are very windows based. If you're familiar with C# you'll find java very easy to learn and it has better apis :-). It is however slower then C++ and C#. good luck. No hurries, no worries.

            F Offline
            F Offline
            fakefur
            wrote on last edited by
            #8

            C# and C++ are very Windows based??!!?? I think you might be mistaken there. Linux is written in C++. OSX is written in C++. The primary development languages for those platforms is C++ (until the advent of stable and mature C# technology for them)

            1 Reply Last reply
            0
            • B Brigg Thorp

              Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

              D Offline
              D Offline
              Daniel Turini
              wrote on last edited by
              #9

              Funny how much people recommended a language without even knowing what application you're talking about. Is it web-based? Is it a desktop application? Is it a service (daemon)? How complex will it be? Performance requirements? Staff skills? How strong will it need to be against decompilers? I agree that the "easy" options are Java and C++, because those are fairly generic and known languages. But there are other options, which can run in several platforms, and that for some solutions, can produce results way faster, like Perl, Python or Ruby. Brigg Thorp wrote: I am a complete moron in this area If you're on a tight schedule, forget about C++ for your first multiplatform project: it's too powerful and it'll make it too easy for you to shoot yourself in your foot. Prefer scripted languages like Perl, Python or Ruby or something that was made to be portable like Java. Again, further details would lead to better recommendations. I see dead pixels Yes, even I am blogging now!

              B 1 Reply Last reply
              0
              • D Daniel Turini

                Funny how much people recommended a language without even knowing what application you're talking about. Is it web-based? Is it a desktop application? Is it a service (daemon)? How complex will it be? Performance requirements? Staff skills? How strong will it need to be against decompilers? I agree that the "easy" options are Java and C++, because those are fairly generic and known languages. But there are other options, which can run in several platforms, and that for some solutions, can produce results way faster, like Perl, Python or Ruby. Brigg Thorp wrote: I am a complete moron in this area If you're on a tight schedule, forget about C++ for your first multiplatform project: it's too powerful and it'll make it too easy for you to shoot yourself in your foot. Prefer scripted languages like Perl, Python or Ruby or something that was made to be portable like Java. Again, further details would lead to better recommendations. I see dead pixels Yes, even I am blogging now!

                B Offline
                B Offline
                Brigg Thorp
                wrote on last edited by
                #10

                Daniel Turini wrote: Funny how much people recommended a language without even knowing what application you're talking about. I kind of came to the same conclusion when I was reading the responses. I forgot to mention what it was I was doing. Here are some more details on the project: - We have a USB device we need to connect to to read data from - we currently have a C++ app doing this sitting in the system tray looking for the device to become attached, which then launches the main app. Links to the HID library - We have a desktop application, currently written in VB. I am slated to rewrite this software, and I have my choice of language (if we write for Windows only, I'll probably choose C#). The main part of the app will be a graph that shows the data imported from the USB device. This also uses the HID API's. - We use InstallShield for the installer. I don't think their software is multiplatform, so I would need something portable for this. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                J R 3 Replies Last reply
                0
                • B Brigg Thorp

                  Daniel Turini wrote: Funny how much people recommended a language without even knowing what application you're talking about. I kind of came to the same conclusion when I was reading the responses. I forgot to mention what it was I was doing. Here are some more details on the project: - We have a USB device we need to connect to to read data from - we currently have a C++ app doing this sitting in the system tray looking for the device to become attached, which then launches the main app. Links to the HID library - We have a desktop application, currently written in VB. I am slated to rewrite this software, and I have my choice of language (if we write for Windows only, I'll probably choose C#). The main part of the app will be a graph that shows the data imported from the USB device. This also uses the HID API's. - We use InstallShield for the installer. I don't think their software is multiplatform, so I would need something portable for this. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                  J Offline
                  J Offline
                  John M Drescher
                  wrote on last edited by
                  #11

                  I have to say one thing. None of the stuff you said is very easily done in a cross platform way. Each os has its own USB handling. Install programs are different... John

                  1 Reply Last reply
                  0
                  • B Brigg Thorp

                    Daniel Turini wrote: Funny how much people recommended a language without even knowing what application you're talking about. I kind of came to the same conclusion when I was reading the responses. I forgot to mention what it was I was doing. Here are some more details on the project: - We have a USB device we need to connect to to read data from - we currently have a C++ app doing this sitting in the system tray looking for the device to become attached, which then launches the main app. Links to the HID library - We have a desktop application, currently written in VB. I am slated to rewrite this software, and I have my choice of language (if we write for Windows only, I'll probably choose C#). The main part of the app will be a graph that shows the data imported from the USB device. This also uses the HID API's. - We use InstallShield for the installer. I don't think their software is multiplatform, so I would need something portable for this. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                    J Offline
                    J Offline
                    John M Drescher
                    wrote on last edited by
                    #12

                    Also C# may be fine for Mac and linux also by using mono. http://www.mono-project.com/Main_Page[^] John

                    1 Reply Last reply
                    0
                    • B Brigg Thorp

                      Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                      J Offline
                      J Offline
                      Joe Woodbury
                      wrote on last edited by
                      #13

                      I agree with Mike that you need to separate interface from implementation so that each platform can have the "look and feel" of that platform. I would also make sure you aren't eliminating cool features on one platform just because you need to code to the least common demoninator. Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke

                      1 Reply Last reply
                      0
                      • B Brigg Thorp

                        Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                        B Offline
                        B Offline
                        Brian Delahunty
                        wrote on last edited by
                        #14

                        Java or C# (Mono) Regards, Brian Dela :-) Now Bloging![^]

                        1 Reply Last reply
                        0
                        • B Brigg Thorp

                          Daniel Turini wrote: Funny how much people recommended a language without even knowing what application you're talking about. I kind of came to the same conclusion when I was reading the responses. I forgot to mention what it was I was doing. Here are some more details on the project: - We have a USB device we need to connect to to read data from - we currently have a C++ app doing this sitting in the system tray looking for the device to become attached, which then launches the main app. Links to the HID library - We have a desktop application, currently written in VB. I am slated to rewrite this software, and I have my choice of language (if we write for Windows only, I'll probably choose C#). The main part of the app will be a graph that shows the data imported from the USB device. This also uses the HID API's. - We use InstallShield for the installer. I don't think their software is multiplatform, so I would need something portable for this. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                          R Offline
                          R Offline
                          Rocky Moore
                          wrote on last edited by
                          #15

                          I personally would stay with C#/.NET/Mono for most of it. Over the duration of the application, I believe that this technology will continue to grow and provide a stable base for your application for quite some time. The interfacing with the hardware may be a bit tricky and have to be C++ , on the different platforms, VB app would probably best ported to C#. Rocky <>< Yahoo! 360º - Try it yourself![^]

                          1 Reply Last reply
                          0
                          • R Ryan Roberts

                            If you are going down the C++ route, there are a lot of mature cross platform toolkits out there, you could go for qt[^] if you are looking for a complete commercial soloution and like 1992 style C++. Or you could cobble your own together from discrete projects: there's http://www.wxwidgets.org/[^] for portable UI. You can use http://www.boost.org/[^] for standardising platform stuff like file IO and threading. The DTL[^] is a nice cross platform DAL - its ORM though, if thats a problem. You could use http://www.cs.wustl.edu/~schmidt/ACE.html[^] as a cross platform networking layer, if you like pain :). I have personaly had good results from using boost , DTL and gSOAP[^] in a cross platform system (BSD and windows). Ryan

                            O fools, awake! The rites you sacred hold Are but a cheat contrived by men of old, Who lusted after wealth and gained their lust And died in baseness—and their law is dust. al-Ma'arri (973-1057)

                            A Offline
                            A Offline
                            afinnell
                            wrote on last edited by
                            #16

                            Sir, I take offense to saying ACE is painful to use. Hehe. :) It's one of those things that has a severly high learning curve, but pays off really well once it is learned. - Drew

                            1 Reply Last reply
                            0
                            • B Brigg Thorp

                              Our marketing department started asking us what it would take to start writing software that would support Windows as well as Mac's (and possibly, even Linux). I have no experience with Mac development (or Linux for that matter). Is there some sort of multi-platform development language (preferably C++ or C#) that allows me to write one code base and use it across all platforms? Or, at the very least, is there a tool that can port Visual C++ or C# code to other platforms? Also, how do you do this considering a lot of the UI features look very different across OS's? I am a complete moron in this area and any suggestions would be greatly appreciated. Regards, Brigg Thorp Senior Software Engineer Timex Corporation

                              A Offline
                              A Offline
                              afinnell
                              wrote on last edited by
                              #17

                              Let's not forget about Flash. ;-) - Drew

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups