I've got my hands on an old Microsoft J++ project that uses some old Microsoft-specific things from the Microsoft Java Virtual Machine (now deprecated and unsupported). It uses additional things from the old Microsoft Java Development Kit, which I can't find anywhere on the web.
It seems the best route forward is to migrate this project to the latest version of Java, and migrate the J++ .sln solution file to an Eclipse project file.
I'm a bit overwhelmed right now -- are there any tools to help ease the migration process? Any tips for doing such a conversion?
I actually developed a J++ app on Eclipse for a number of years, using Eclipse as an editor and VS as a compiler. The WFC problem was prohibitive (and will definitely keep you from porting to straight Java), but Eclipse was still able to grok and refactor most everything as a straight editor with compilation turned off. This was actually where I learned to love Eclipse.
We eventually ported the entire 700K+ line app to C# with relative ease. I would avoid J#, as it's deprecated now. Go straight to C#, use VS with Resharper and you'll almost feel like you're in Eclipse. : ) The C# converter was pretty dang accurate, and left helpful comments in the sections where it knew there was a less than 1-to-1 conversion, most of which were minor.
I would break this up in multiple steps.
First get this to compile and in Visual J++. You will most likely need to buy a used copy from e.g. Ebay.
A quick search found http://cgi.ebay.com/Visual-J-6-0-Professional-Commercial-Box-561-00176_W0QQitemZ320309632655QQihZ011QQcategoryZ80301QQcmdZViewItem
THen when you can see how this works you can work isolating and refactoring the Microsoftisms into something generically usable. This page illustrates how to make J++ work with a Sun JRE so you can do the initial work there: http://java3d.j3d.org/tutorials/quick_fix/vis_jpp.html
Then you will most likely have a bunch of java files which you can copy-paste into a fresh Java project inside Eclipse.
J++ was sufficiently unloved that you are almost certainly going to have to do a lot of your own rewrite/replacement of the WFC extensions going the Java route.
You may (and I stress the may) find the way forward to .net marginally less grubby -- if you can get hold of a copy of Visual Studio.Net (.net 1.0 vintage) and use the J# Upgrade wizard (not sure if there was ever a stand-alone commandline tool); from then you could use the Java Language Conversion Assistant (in VS 2005) to migrate to C# -- though even that path will leave you with some approximate conversions that you will need to inspect, from things that are loudly commented in the transformed code, to subtler things like Thread being sealed ( == final) in .net, and not in the Java APIs.
Related
I have been developing Java code for doing data analysis in astronomy and physical sciences for several years using xemacs and JDE, which I have grown accustomed to and like. However, I would like to use all the wonderful features included in Xcode to make my coding easier and better.
I know that Apple encourages developing in objective C, but I don't have the time or motivation to start with this at this time. I know Java pretty well, and therefore, I want to stick with it, as least for now.
After several hours of searching the web, I haven't been able to find any decent instructions on how to setup and use Xcode under Mountain Lion or Mavericks to develop Java code. And I don't really care about all the features that are related to developing application for OS X or iOS, I am coding libraries of classes to do statistical data analysis. I just want a nice IDE to do it in, and I don't really like the look and feel of Eclipse, which is the standard for Java.
So, in the end, my question is very simple, but I cannot find the answer by googling: how does one develop in Java using Xcode5?
XCode did previously support java development but that was removed when Apple decided to stop supporting Java on OS X.
Either you need an old version of XCode, or you should go - which I would recommend you to do - with a Java IDE like Netbeans! eclipse and/or IntelliJ. After installing oracle java 7, all of them run well.
So I have this extremely large old code base written in J++ that I need to go into at times to update/fix certain things. Much has been migrated to newer languages, but the old code is still being used. I am just getting into the code base and am finding it very difficult to figure it out with the Visual J++ 6.0 IDE. I am used to newer visual studio .net IDE's and even Netbeans java IDE has much better navigation features.
My biggest headache is not having a "find all references" type of functionality and being able to jump to a function definition (outside of the class I am in), see what it is expecting for variable types, jump to a class declaration, etc. There seems to be limited support by using the Class View to jump to the definition of the object within that class, but jumping to THAT classes declaration or to an outside function definition seems to be beyond it. Not to mention the windows arent tabbed so it gets horribly cluttered. Intellisense is very limited, etc.
I know it is old, but some of the things seems like it would/should have been supported.
I guess I am looking for any tips, maybe possible tools that can help make navigating and learning this code base less painful. I am using windows explorer to search all the files in the project, because it doesnt even have a find in files.
We had same problem.
I resolved that by making a new ANT project (Own compile and clean etc. tasks) for Netbeans.
I had to do it this way, because I couldn't get the Netbeans build system to work correctly with the added J++ compiler.
I then added new JDK target so that Netbeans would find all the required MS classes (ZIP files from J++ install)
After all this I had a compilation environment where I could use all the strengths of Netbeans but still was able to compile with the J++ compiler (VJC).
We use it still to maintain our legacy platform. And this has made the codebase much easier to handle as we can use refactoring and all the other automated tools from Netbeans.
This way we could put the sources under SVN instead of the hideous SourceSafe where they were before.
So If this sounds like an idea you would want to try just ask and I will provide you the pointers how to get it done.
NOTE! This doesn't work that well if you have used the GUI builder stuff, although we managed to make an experimental project where we had the ANT+Netbeans project and J++ project which shared the same sources.
I'm looking for the following:
A nice debugger that allows me to easily view variable values if I use breakpoints.
Works very nicely in Windows 7.
Has something similar to the Toolbox pane in Visual Studio.
Built in intellisense, and code completion with the TAB key.
Long term support. I mean something that will last and stay in active development for years. I don't want a pet project IDE that will stop developing in a year. I'm just learning so it'll be very dificult at first to switch IDE's.
I'm new so I don't really know which IDE provides what I need between the two. Any help?
Well, I switched from Eclipse to Visual Studio, and I use both just about every day.
I found it hard to get used to the little differences at first, but now I am proficient in both IDEs.
I can't speak to whether or not Netbeans would be easier to learn, but Eclipse shouldn't be hard at all.
Both IDEs will provide all of the features that you have listed, and you should be able to customize both of them to get them to work almost exactly like Visual Studio.
So you want to learn Java and your first question is about which IDE to learn ? I suggest you look at BlueJ which is an IDE designed for people who want to learn Java. From my, I admit limited, experience with the IDEs you mention, BlueJ is the one which gets least in one's way when trying to learn Java as opposed to learning the IDE. Once you've exhausted BlueJ's capabilities there is an easy progression to NetBeans through a plug-in but you would probably not find it too difficult to step up to Eclipse instead.
Yes, I know you want to choose between Eclipse and NetBeans but BlueJ might be of interest.
This is a common debate, and there are obviously merits on both sides (this might be better served as a community wiki page). I prefer Eclipse, but to answer your questions as well as I can briefly:
Works very nicely in Windows 7.
Both are fine.
Has something similar to the Toolbox pane in Visual Studio.
Sorry, not familiar. Neither are short on panes, though Eclipse has a richer cache of third party plugins that might give you the experience you want.
Built in intellisense, and code completion with the TAB key.
I believe both are Ctrl-Space by default. If you're working in Java in Eclipse, there's an automated pop-up after a half second delay each time you type a separator (.) character.
Long term support. I mean something that will last and stay in active development for >years. I don't want a pet project IDE that will stop developing in a year. I'm just >learning so it'll be very dificult at first to switch IDE's.
Both are very mature products. I'd imagine Eclipse's fortunes are a little more secure simply because NetBeans might experience some turbulence during the Oracle acquisition of Sun.
My only other comment is that it's always seemed to me that Netbeans had far nicer "click-and-go" project templates out of the box, while Eclipse offered richer third party library integrations and a better debugger.
Probably both will do. Personally, I'd rather use Netbeans, because it's easier to get started right-out-of-the box. Eclipse depends more on plugins.
Why not try both and see which one suits your individual tastes more?
Both are find but if you want to build GUI's, Netbeans has the edge as it has a built in GUI builder, including a toolbox of controls to use with it.
Eclipse does not have a GUI builder. The commercial Eclipse distribution, MyEclipse does have a GUI builder - it's actually the one from Netbeans.
Neither Intellij IDEA is the Cadillac of Java IDEs
Netbeans = Great out of box experiance
Eclipse = Highly customizable with plugins and (so I've heard) slightly better intellisence-like capabilities.
If possible, I'd say try both (despite the bandwidth problem). If you get basic Java Development versions, the sizes aren't that big (48 MB for NetBeans and 92 MB for Eclipse)
I personally prefer NetBean's in-built capabilities since I don't like having to install plugins to make my experience the way I want it (and not all Eclipse plugins are free) but most of my fellow java devs prefer Eclipse's simplicity and ease of use.
I think you should try Intellij Idea, it the most powerful-intuitive java IDE I've never seen (http://www.jetbrains.com/idea/index.html). The new Community Edition is free and more than enough for java developpement. As it is highly configurable you can choose 'TAB' for auto completion, but I think you can learn from existing combinations that are well design.
Regards.
Java has some really nice IDEs available and many will do what you require.
I dont know you, but I use VS with Resharper so I m very used to those shortcuts, if you do too then have a look at IntelliJ ( they have a comunity edition)
Otherwise you can get eclipse and get the IntelliJ keymap ( or try to get the default VS keymap)
Netbeans is nice too, but I had some problems with it ( ie didnt build, rancomly crashing, etc)
Also most offer Source Control integration ( in Eclipse you have many flavours of subversion for example)
I guess you ll have to play around and find what suits you
Cheers
Emacs and Java change propagation
Hi,
I'm mostly used to code in IDE like Eclipse but I wanted to try emacs. Because I keep hearing about how much better it is than big IDE like Eclipse and Visual Studio.
So I was looking at what emacs provides for Java (with the JDEE extension) but it doesn't seem as complete as Eclipse.
One of the most important thing I look for in a Java editor is change propagation and error notification. For example if I rename a class, I want to be able to have all the declarations of this class renamed automatically. And if I delete a method, I want to be able to see all the place where this creates errors.
I didn't find those things in emacs, and this is a showstopper for me, I can't see how I could work on big projects without those features.
So my question is : those features don't exist or is it just me that haven't looked at the right place?
Emacs can be better that Eclipse, but the question is "for what"? Emacs (and VIM) are generally smaller, faster and optimized for text editing and navigation*. In recent versions Eclipse are quite capable for editing and navigating java code but with different "style".
If you are willing to learn Emacs then learn it. You will get experiences on your own and it is very important for a developer (you are the only one can decide what is work for you). But learning Emacs does not mean to "throw out" Eclipse, they can co-exist quite well if you use ant or maven-based project building and a source control system. You can for example do all editing in Emacs while for debugging and refactoring use Eclipse.
There are some interesting thought in this thread about Emacs and java development. Also there is an interesting read and conclusions about Emacs and Eclipse from someone who tried both environment.
If you are not an expert Eclipse user yet you should look at the powerful editing and navigating features of Eclipse before starting Emacs:
10 Eclipse navigation shortcuts every java programmer should know
Effective Eclipse: shortcut keys
Effective Eclipse: custom templates
Effective Eclipse: fix it quickly
Back to the question: there is an Emacs extension called Xrefactory for Java but it does not support Java 1.5 features so it is useful only if you use Java 1.4 or older.
(*) of course they are much more, I know :)
Emacs is an incredible editor, with good support for developing in C. For developing in Java there is much better support in one of the Java IDE's which has deep knowledge about the programs being edited. You probably want something like Eclipse, JDeveloper or Netbeans.
In my opinion you will not be satisified with developing Java with Emacs, and you should use another tool.
I don't know much about Emacs (so you may regard the following as off-topic), but I work with both Eclipse and VIM.
I use Eclipse for big Java projects, and I can't live without the large-scale features (cross-project renaming/refactoring etc.). I use VIM for small scale stuff (e.g. knocking up code for StackOverflow examples in multiple languages).
Eclipse and VIM have very different capabilities and consequently I use each bearing this in mind. I don't expect VIM to do the heavy lifting, but on the other hand I don't expect Eclipse to start in a keystroke and to be able to write a new (small) project in a few seconds (in whatever language I require - not restricted to Java). Perhaps you should look at the Emacs/Eclipse pair in a similar light ?
I've been introduced to this wonderful project, xhtmlrenderer; the flying saucer project. Problem is, is that where I work, it's strictly a microsoft shop and I haven't done any java development since college, and a smidge of WebSphere a few years back.
I was wondering what it takes these days to do java development? I set up a quick proof of concept to see if I could do what I wanted with this project and it works great, however, I used jnbridge whose licenses are a bit on the expensive side but Visual Studio was what I had handy and got the job done with an hour of finagling.
I'm wondering what it take to do java development these days? Are servlets still the norm? Is Apache where I should start looking to get a small web server up and running? Is Eclipse/Ganymede the IDE to use?
Essentially what I want to do is pass a url to the service and have it spit back out a PDF. Just on vacation right now, and stuck on dial up, but can't stop thinking about this.
Thought I'd post these thoughts now to see if I can get a jump start on next weeks work.
Eclipse is certainly the IDE on no budget, NetBeans is also free. I prefer IDEA from Intellij, but for something that sounds like such a side part of your project, it probably isn't worth the money.
In terms of servlets, etc., it really depends on the archetecture/scalability you are looking for.
If you are looking for something that needs to run as a small web interface, then something like Jetty or Tomcat with a basic servlet should be fine.
You might be looking at something invoked via the command line, although starting a JVM for every conversion is going to be too heavy for all but the most trivial usages, but a little program that monitors a directory and pulls stuff out of it for the conversion may be what you need.
If you give more details about the archetecture and how you are planing to use it you could get some more specific advice.
In general .NET and Java development are quite similar (.NET was started to compete directly with Java, after all), but the real practical difference is that a lot of the .NET environment is kind of provided to you on a silver platter. You need a web container, you have IIS, you need a database, you have MS-SQL, You need an IDE, you have Visual Studio, etc., etc. In Java development, these are all choices to be made, there isn't really a default obvious good choice for a lot of things - there are many competitors. That can create a larger curve for a Microsoft shop than you are expecting.
Java's not all that different, although generics add some excitement; PDF with iText is fairly straightforward; and the IDE world is pretty much the same as ever. Eclipse and Netbeans are common, there are several others, and real programmers still use EMACS.
Apache is pretty generic, but with servlets in mind you might think about Tomcat.
If you want a small enough web server, you can always use an embedded Jetty. If you need the full services of Tomcat, it's also available. For Java development, I use Eclipse for an IDE. Not only is it free, but its support of refactoring is ahead of Visual Studio. Actually, if you used the WebSphere development environment, then Eclipse will be very familiar.
Consider sneaking in IKVM (http://www.ikvm.net/) as it allows you to use Java components in a .NET environment.