Recommendation for multi-platoform development
-
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
-
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.
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
-
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
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 -
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.
-
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.
-
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
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!
-
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!
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
-
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
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
-
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
Also C# may be fine for Mac and linux also by using mono. http://www.mono-project.com/Main_Page[^] John
-
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
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
-
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
Java or C# (Mono) Regards, Brian Dela :-) Now Bloging![^]
-
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
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![^]
-
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)
-
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