Can I code for Visual C++ and Visual Basic on Ubuntu? - vb.net

I want to change my OS to Ubuntu, but I have pending projects in Visual C++ and Visual Basic.
I have not worked with Ubuntu before, so will I be able to carry forward my pending work to Ubuntu? Will it work with the IDEs available in Ubuntu?

IDEs on Linux are generally for projects that work on Linux. If your projects use anything specific to MS (and Visual Basic is one such thing), you won't be able to work on them under Linux-specific IDEs. Even your C++ code might be using many Windows-specific tools, like MFC, C++/CLI or managed extensions, COM... Windows has lots of non-standard, non-portable things. So, answering your question: probably no.
You can install Visual Studio under Linux with Wine, but it will probably be an unpleasant experience: Visual Studio is a big application that strongly integrates with Windows, and Wine might not be able to emulate Windows well enough.
I would advice you to keep Windows until your work on these projects will be finished, dual-boot (install Ubuntu on another partition and boot it when you don't need to work on your projects) or install Windows in a virtual machine inside Linux (f.e. using VMWare Player or VirtualBox). I chose last option and with VMWare it is good enough for me.

The best options would be:
to use the wine emulator;
to install windows in a virtual machine (with VirtualBox);
to use MonoDevelop.

If those projects are targeted at Windows deployment, then you really ought to be developing them, or at least testing them, on Windows. That said, you could use a virtual machine to keep running Windows for work on those projects, and use Ubuntu otherwise.
If you decide to do this, I can't recommend making backups (plural!) highly enough before starting, in case you need to back out.

You can use WINE and run Visual Studio's on Ubuntu, the best option before a total conversion is to dual boot between windows and linux.

Visual C++: maybe. Depends on what kind of project it is. If it doesn't involve GUIs or MS-specific technologies like COM, .NET and company, you can probably port it with a minimum of effort. If it involves GUIs and/or MS-specific technologies, no it won't be portable.
Visual Basic: There is REALBasic which is claimed to be "like Visual Basic", but I'm rather dubious of its compatibility. (Whenever I see the words "migration tool" I get very nervous.)
That being said, you don't have to leave Windows completely behind these days. You can run WINE (if you really like pain -- I've never had WINE accomplish anything useful), or you can dual-boot or you can use something like VirtualBox to run Windows under Linux, all depending on your available resources and inclinations.

Sounds like you did not try it out: it won't work even with WINE it'll be a pain. To try out what will work or not install a virtual machine with Ubuntu as an OS under your current OS. YOu will be able to test things without breaking something.

I would suggest looking at the Mingw32 system. I have had excellent luck compiling Win32 applications (in C and C++) on a Linux system. So long as you're using the public Win32 API (basically, anything in windows.h), Mingw32 is a reasonably good choice.
You will probably not be able to use your Visual Studio solutions in Linux. Linux tends to avoid IDEs in favor of a system called Autotools. Having used both for many years, I have to say that on balance I prefer Autotools.
There is a steep learning curve involved in Autotools, but I feel the payoff is worth it. Good luck!

Related

OSX + VB.Net, briefly what's required to port my program from windows, perhaps by mono?

I have an order entry system which was developed using vb.net it uses an ms access database.
I think I might be able to use mono?
I'll need an IDE if possible.
Can someone tell me what I'll to download and what problems I might face, also any suggestions.
You can use MoMA to determine how well your application will run on Mono. It will analyze the app and tell you of any potential compatibility issues. As far as IDE goes, MonoDevelop would work, but depending on the compatibility with Mono, you might be able to just continue to develop it on Windows. Since Mono is just an implementation of the CLR you may not have to make any code changes at all.
Mono supports ODBC for database connections, but you would have to install an ODBC driver (Such as MDB Tools).
I think I might be able to use mono?
Porting applications can be tricky, generally it can go two ways:
- Get it running with minor tweaks.
- Stop trying and start developing from scratch.
MoMA helps, but you never know for sure until you try :)
Checkout MonoDevelop for Mac OSX:
http://monodevelop.com/

Wanted: user experiences with C# (mono) on MacOS and Linux

I have a friend who is was a serious Linux developer but now he's working with C# on Windows and is really loving it. I'm attracted to C# because, like Java, I should be able to compile on one system and run anywhere.
If you are developing on Windows with C#, you're using dot-Net. On Linux and MacOS, you're using Mono.
Other people have posted that Mono is pretty good, no longer a science project, and that most of the core Microsoft functionality is present. But that's not really getting at the questions that I have. I'm wondering:
How does performance of Mono on Linux/MacOS rate against Java? If I want to run fast on all three platforms with the same object code, what's my best choice?
Is it easy/possible/reasonable to use Mono with makefiles and do my development with emacs?
Is there support for code factoring in MacOS and Linux, or am I better off just biting the bullet and doing all of my development in Windows?
How well does Mono work with Subversion and the rest of the open source development stack? How about autoconf? Or is this a completely different way of doing things?
Thanks
I have been using Mono on Linux for about three years and lately have been using it on OS X. Some of the Linux stuff was pretty extensive but the OS X stuff has just been some simple ASP.NET MVC2 apps so far.
1) Performance of Mono has never been an issue for me. That is not to say that performance has not been important, it is just that the performance of Mono itself has never been an issue. A lot of what I have done is web based so I/O and database memory use have hit me before Mono has.
Historically, the biggest deficiency with Mono has been the Garbage Collector (GC). I would say that Java is better tuned in this regard. The most recent versions of Mono have made huge strides in this area but I do not have any hard numbers for you in terms of comparisons.
I am sure Mono is faster sometimes and Java sometimes but I would say that Java is faster overall.
2) You can certainly do Mono development with makefiles. Certainly the Mono team itself does. Also you can certainly use Emacs and there is a C# mode for it.
I tend to use MonoDevelop and xbuild (Mono version of msbuild) myself and do not have any experience doing C# work in Emacs. MonoDevelop is great because it is exactly the same on all platforms. Also, although I rarely use it anymore, it is nice that the project format is the same as Visual Studio and SharpDevelop.
3) MonoDevelop has pretty decent code factoring support. It is the same on Windows, Linux, and Mac. You do not need to use Windows for development (though you certainly can) but I believe you will be happier using an IDE like MonoDevelop. Even things like Intellisense become hard to live without once you are used to them. But integrated debugging, being able to drill-down into the framework, database integration, unit testing, SCM integration, and other nice tooling support all in one place is just the way to go (for me at least).
4) Mono itself does not care about version control of course. Your source files are just text and you could use anything to manage them.
That said, MonoDevelop has fantastic Subversion support built right into the IDE. I have used it extensively and it is one of the reasons I have trouble moving off MonoDevelop even on Windows. The latest version of MonoDevelop (2.6 beta) includes Git support as well.
You did not mention unit testing but MonoDevelop also has NUnit support built into the IDE. I use that on every project as well and it works excellently. The version in MonoDevelop is 2.4.8 (if memory serves) so it is not quite current but it works great.
In a nutshell, Mono works really well with Open Source tooling in general. It has always played really well for me.
Autoconf is of course used by the Mono project itself but, as a Mono developer, I have never seen a need for it. I strive to only use managed code in my projects. As such, all I need on the target platform is Mono (or .NET). Not having to worry about all that stuff is one of the primary benefits of a managed environment like Mono or Java. The runtime itself (the CLR) ensures that my app has everything it needs to function properly.
I know that MonoDevelop will build autoconf/autorun files for C/C++ projects (non-Mono) but I have not done much with it myself.
As to a previous comment, the Mono JIT is obviously tuned to the target platform. That is where platform specific performance tuning happens.
Just as a comment, I find that Mono is best viewed as a development environment in it's own right rather than a compatibility layer for Microsoft stuff. The Mono team has extended .NET in many interesting ways. Anything you develop for Mono will run on .NET but there are some .NET features not available for Mono. For example, Mono does not support Windows Presentation Foundation (WPF). You have to use Windows Forms or GTK# for cross-platform GUI work. You can also use something like Cocoa# or MonoMac on the Mac, MonoTouch on iPhone, or MonoDroid for Android. You can use Moonlight instead of Silverlight as well although I have not played with it much.
One more thing since you asked about Java. I have found a few times that the Java world had libraries that I could not find equivalents for in the .NET world. In these cases, I have had amazing luck using IKVM.NET to integrate this into my Mono apps. IKVM.NET also works on .NET but Mono and IKVM.NET are very cozy and even share some code.
So there you go, one real answer for you at least.

Cross platform software development (Mac, Window) language suggestion

I need to develop a software which works for both windows and Mac OS.
The requirement are follows:
User can view flash file, make the selection and software print out the user selected flash file list.
I have experience in .net and windows platform but no experience in Mac OS. What is best development language and tool for my current situation.
I may be a bit biased on this, but you should use Qt because it will make your code portable on Windows, Mac OS X, Linux and even some mobile platforms. I don't really understand your requirement but Qt is pretty much the all-round cross-platform solution. It's C++ based, but easy as such (no memory management hassle, Qt takes care of it all).
On one hand you could use Java, it's fully compatible with Windows, Mac and Linux, also the language is similar to C# so you could adapt without too much trouble, if you used .net with C#.
On the other hand you could use your knowledge in .net and use Mono. It's an open source library for running .net code in other platforms, It's not equal to .net (doesn't include all the libraries) but could solve your problem.
Hope my answer helps you.
Xojo is pretty easy to use and lets you make native Windows and Mac apps from a single source project so you might want to take a look at it.

Is it possible to develop using Cocoa in Windows and Linux?

I'm starting to learn Objective-C and I don't have a Mac (and I don't have plans to get one), but as I see that Cocoa is a very good framework to develop in Objective-C, I want to know: Is it possible to develop using Cocoa in Windows and Linux?
Thanks.
I think that your best bet, if you want to use Cocoa, is to get a Mac. You really won't regret it. GNUstep is a neat solution, but it is impractical to distribute applications built using GNUstep, because (as far as I know), clients must have the runtime installed for it to work.
Cocotron is an amazing project as well, and in the future, it may be useful for you if you want simple apps to run on both Mac OS and Windows. But you would still need a Mac to use it.
If you are interested in using a language like Objective-C with a framework like Cocoa, but don't want to get a Mac, why don't you try web application development with Cappuccino and Objective-J?. Objective-J is an implementation of an Objcective-C-like language in JavaScript, and Cappuccino is a really amazing imitation of the Cocoa framework in Objective-J.
Some examples of what can be created using that framework are 280 Slides and the new, stunningly beautiful EnStore. That's not a perfect solution, and unless you are content to just do web applications, you should buy a Mac.
Take a look at Cocotron
The purpose of the project is to provide an easy to use cross-platform solution for Objective-C development. In particular, source code level compatibility with recent versions of Apple's frameworks (OS X 10.4 and 10.5).
The general goal is to provide complete support on any viable platform, the project is intended to be as portable as possible. However, most of the work at this time is focused on providing support for Microsoft Windows. In particular the NT based versions, 2000 up to Vista.
You can also run Snow leopard Server inside a virtual machine, like VMWare Fusion.
Apple changed it licence in 2008 to allow that, but only with server editions. I have personally used it with some success to deploy iphone applications (Although it was admitably a bit slow).
You will need decent hardware and preferably a dedicated hard-disk drive to be able to use it properly.
And considering the cost of vmware and osx server you might be better off buying a used mac.

Multiple platform development

I was currently developing a desktop application in C# using mono and testing in SuSE and Windows. The concept doesn't matter much, but it is a "web lint" program that will scan a web site and return possible issues with security and/or cross browser compatibility. However, I want to be able to offer binaries for multiple platforms. Should I stay with Mono, or is there another platform that would give me a better availablility of platforms, such as on Macs, Windows, Linux, and others (possibly mobile platforms), and make it easier to port?
Well, your best bet always is to use a language that actually exists on all the platforms. That usually means Java, I think, though even perl has flavours for mobile platforms (depending on the mobile platform in question).
I do most of my cross-platform work in C and perl, but there are some headaches with C (lots of #ifdef's), and perl may not be on a mobile platform you care about (yet). You'll have to evaluate the languages/compilers/interpreters that are common to all the platforms you want to target and then choose from that list. Without knowing the full list of such platforms, we'll have a hard time telling you what to use, though Java has enough buzz-wordness to likely be a strong candidate.
Iff you know C++, Qt will cover many platforms.
C# and Mono is probably cross-platform enough for most desktop environments. The trick will be the "mobile platform" requirement.
Mobile operating systems are wildly diverse and there's not a lot you can do to generalize. Some have Java, like the Blackberry. C# may get you onto Windows Mobile-based platforms. iPhones do their own thing. You pretty much have to pick a platform and target that. That may end up informing your desktop platform choice.
Just stick to the Mono, make sure that you have Gendarme code inspector (FxCop for Mono) checking your code for portability issues, and you should be fine.
Java will run on Windows, Linux and Macs. Should be easy to transition from C# - use Apache HTTPClient for grabbing the web content you are scanning, and the scanning code should be more or less the same. However the downside is requiring the user to have the Java runtime installed.
Python is another option - you can build stand-alone executables for Windows, and it comes with most Linux distributions by default, and also Mac OS X (citation needed ;) ). This is a lot less hassle for Windows users (language is compiled into the executable, no other downloads required).
If mono runs on Mac OS X then surely that is a good platform as well?
It really depends what you want to do. For web development, if HTML/JavaScript is enough then stick with it. If you need more advanced stuff I would use ASP.NET with Mono (what you probably did) since you already know that. (You can use Visual Studio here.)
Another option might be (since you are a C# developer) to use Silverlight. That gives you Windows and Mac platforms covered and hopefully Moonlight will cover Linxu platform later. (You can use Visual Studio and Expression Blend here.)
If you need desktop application then Java is probably the easiest since you already know C#. But if you know C/C++ try to take a look at wxWidgets for example.
Why limit yourself to the traditional C#/Java? Have a look at Adobe AIR and Microsoft SilverLight