I'm about to start a fairly big application for my company, and since it HAS to be cross platform, we're pointing towards Java (would have loved C#, but explored the Xamarin ecosystem and the Mac part seems to be quite behind the rest package...)
Now, I'm evaluating both Netbeans 8 and Eclipse 4 as RCP. Before I continue I have to say that I've been maintaining for almost a year our previous software which was written in Netbeans Platform, but it has so many performance issues and so many bugs (some of which, it seems, tied to the platform itself -- i.e. plugins not updating with no apparen reason) that both me and my company kinda lost faith in Netbeans Platform, but on the other side I can't seem to figure out a good way to start digging in Eclipse RCP. Of course, mantaining that software means that I'm already experienced in Netbeans Platform, while I'm at "Hello World" level with Eclipse RCP.
On top of that, I guess I'm going to use JavaFX 8, which I have to learn as well, since it seems it's the new de facto standard in Java GUI.
Basically my software should handle a (local, SQLite or JavaDB or similar) database of customers, with various data to be sent via Ethernet to other devices.
So, has anyone experiences with one or the other? And, if someone's into Eclipse, could gift me with some updated tutorials for Eclipse 4 RCP before I start buying books?
Thanks anyone.
Depends on your choice of UI toolkit, eclipse is SWT and netbeans is pure swing, therefore pure java. I have not worked with eclipse, but I have been doing Netbeans plugins for nearly three years. Netbeans modular programming is pure pleasure like no other I know.
Which Rich Client Platform to use
JSR 296 has been postponed to Java 9 after being postponed from java 7 to Java 8. So I wouldn't wait on that. Spring RCP is dead long time ago. The author of the above post seems to have preconceived notions about Netbeans RCP's approach.
Netbeans has already implemented both JSR 296 & JSR 277 long time ago and their implementation is time tested, nearly 15 years now.
At the end of the day, it boils down to what you are trying to do. But Netbeans RCP is a great tool and is used by many customers. FedEx and US airforce are the ones that come to my mind.
Listed below is netbeans' showcase that lists all the existing users of the RCP. It may be a bit out of date IMO.
https://platform.netbeans.org/screenshots.html
Update
There was one more thing I wanted to write but found it hard to gather myself at the bar last night :). A while ago I tried to convert SquirrelSql to use JavaFX, but as with all my other ideas, I lost interest midway. I found it surprising that I could just use the JavaFx's sorta kinda MVC with JBoss weld CDI and I really liked programming MVC in Java Desktop UI world. I know you must have already made your decision, but this with worth taking a look at ,i am sure it might come in handy for your future endeavours as you spend your time doing desktop apps for a living. Here is the code, look into fw-fx directory.
udutha-sql
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.
I've Inheritted a large Java Web project which I've got to make some modifications to, I'm a fairly competent Java Programmer when it comes the the basics but I've never done any JSP programming or EJB programming before. I remember vauguely doing some servlet programming 5 or so years ago in university, but I'm assuming that everything has changed since then.
I'd planned on getting myself up to speed this weekend, but I don't know where to start.
What would be a good learning trail to get me from Zero to proverbial Hero? or at least to a level of competency which will let me be able to read the JSP servlet and EJB code and understand how it works well enough to modify it and deploy it?
Ofcaurse it depends a lot on what project you inherited and when it was written.
Also what technologies are used?
The best resource on starting J2EE development I think it's the Java Passion site.
The online tutorial on netbeans.org are very good. I recommend to download the NetBeans 6.5 IDE (free) and walk through the J2EE tutorials.
The tutorials are very well written, and introduce the basic elements of enterprise and web development. They also require very little time to complete.
http://www.netbeans.org/kb/
Find out how complex it is. There is a vast difference between a web application without EJB's and one with.
Is it running in JBoss/Tomcat/Jetty/Resin/BEA/WebSphere?
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.
I have a DVD cataloging application that I wrote a few years ago with MFC. Records are saved in a sqlite database, so basically it's a CRUD app. UI-wise, it has a tree view on the left, a list view (grid) on the top right, and an HTML view (embedded IE) on the bottom right. Nothing fancy.
I wanted to update the app with more features, but I've been using Java EE for the past couple of years and I realized that I wasn't productive at all with MFC. So I'm thinking maybe I should use something else to boost my productivity. Cross-platform would be a big bonus, but it's not absolutely required.
Here are the options based on my research:
Java / Swing: I can utilize my Java knowledge; great third party libraries (such as Spring for IoC and Hibernate for ORM); cross-platform. Downside is, JRE required for users; Swing seems to be in the "maintanence" mode and it's not getting much attention from Sun.
C++ / Qt: native application;
cross-platform. But I'm new to Qt so
I have to learn it first.
C# / WPF: WPF seems to be the future
of Windows GUI development and I'm
impressed by some WPF sample apps. I
have some experience with C# but I
need learn WPF. Downside is, Windows
only; .NET 3.5 runtime required.
So what would you use if you were in my situation? Thanks in advance for any suggestions.
If you want to learn some new skills while developing this application, then C# / WPF, and LINQ in C# 3.0 is really great if you didn't have it in Java.
If you just want to get on speed, then you already answer your own question, Java / Swing. It is what you are good at.
I'm actually a big C# fan, but since you said that cross-platform would be a huge bonus, I think that Qt might actually be better for that. C# can be cross-platform via Mono, but I've had better results with Qt in that respect. They also have real good documentation in QtAssistant to get you started.
Consider PyQt + Python as well if your productivity is a big issue. Trust me when I say the learning curve for Qt is well worth it, and not as hard as it may seem at first.
Sqlite support is in both the Python standard libraries and the QSql module in Qt if you prefer to use that.
PyQt + Python is a cross-platform option as well, since Python is available for many platforms and Qt's cross-platform to begin with.
The controls you mentioned you used in your application are all available in Qt.
The only other tool apart from raw C++ is Delphi. Period.
With other tools you will have problems in the deployment.
With Delphi you will produce native exes, self-contained. Also, the database connectivity is great.
You never will be dissapointed by lack of controls or 3d party tools, a lot with source code and with free/commercial toolset.
And the compiling times are the fastest in this galaxy ;)
So, if you are serious in provide no-hasle app for your customers, and that customers are not tech-oriented like developers so could be confused because which one of the 4 .NET runtimes install, want minimal support, easy downloads, click-click-install-go, apps that work instanly like Skype,TopStyle (made with Delphi) and others,then Delphi/C++ is are your only option. Seriously. The ONLY options.
If you want a cross-plataform solution, then FreePascal/Lazarus could work if your GUI is minimalist.
In most cases, as long as the scope of the project is reasonably small, and the computational needs are modest, I tend to favor using TCL/Tk. I have not yet learned a gui api in which I'm more productive than tk (not to say that there isn't one, just that I've tried several and found them slower). TCL is not the most wonderful language to program in, to be sure, although there are a number of add-ons that help a lot, specifically [incr tcl] and tcllib.
The reason I choose this instead of other systems, I prefer coding in python, for instance, is because deployment with tcl/tk is close to unbeatable. With Starkit, you end up with a single file double clickable application that requires no installer, and is trivially portable.
Well if you really want a class platform type of application, I would convert it into a web application and host it. That way if one user uploads dvd information or a dvd cover picture another user could take advantage of that information already input into the system.
If your going to develop for the desktop try to make feel like its an application made for that platform by utilizing the OS UI tools. And for windows, pick your 3rd option C# /WPF.
If you have some non UI code in your MFC app that you would like to reuse then consider QT. Otherwise pick whatever you prefer to learn.
Instead of C#/WPF you could give Silverlight a look. You app seems simple enough that it would not take a lot to get up and running. Similar to the demos that are shown off at conferences.
Once you get the basics down it will be fairly easy to add some cool features like animations, movie clips, album art, coverflow like interface etc.
You will be able to target Windows/Mac users and possibly Linux with Moonlight. But I haven't looked at Linux in the past 8 years so I really can't say much about it.
With Eclipse RCP, you get Java, cross-platform development (see Delta Pack), native look (via SWT) and a great framework collection for desktop development (declarative UI, plugin management etc.). You should definitely give that a try.
I went the C++/wxWidgets (but you could do Qt) route a few months back when presented with almost the exact same scenario (upgrade an app with a SQLite db). wxWidgets was fairly easy to pick up, had everything I needed, and was way easier than MFC. The best part was I found a good C++ wrapper for SQLite on CodeProject (e.g., CPPSQLite) and had the whole thing up an running in no time... The project sold me on wxWidgetss, in case you couldn't tell.
I would actually look very closely at something like adobe air. It is cross platform and can be html/javascript based so chances are you won't have a heck of a lot to learn except maybe a javascript library or two. It has the ability to talk to a local datastore or over the interweb to a webservice or RESTFUL service. Development is free with aptana. Check out some of the stuff written in it:
http://www.adobe.com/products/air/showcase/
Does anybody know of any real-world web applications based on JavaFX? I'm an experienced Java programmer considering starting a website while I'm not at my day job. I don't have a lot of expertise on the UI side, so I'm looking for the best way to leverage my existing skills to create something that can provide an awesome RIA experience. Only trouble is, I don't know of any sites that are implemented using JavaFX, since it's so new. I'd like to see what it's capable of.
Found here quite an interesting stories. Top two listed below.
TweetBox
TweetFX
I think the best example of what JavaFX can do is in the examples on JavaFX.com.
However, it's still early in the JavaFX days thus you will be in pioneer days. Which means there are potential rich rewards to be had, but also - many unknowns.
What I think JavaFX "sweet-spots" are:
1 - If you either have Photoshop skills or are collaborating with someone who is - JavaFX provides the only real platform that lets you take Photoshop and generate a UI. Normally you mock-up in Photoshop and try your best to replicate, JavaFX can leverage it natively.
2 - You get all of the goodies from Java libraries "for free".
3 - Can leverage the UI skills to mobile (those that JavaFX will run on anyway).
However, if you are just wanting to have a Java GUI but would rather wait for more polish on JavaFX - I would recommend grabbing MigLayout & go with Swing on Java 6u10 or later.
There are a few JavaFX apps from the JavaFX Coding Challenge; my personal favorite is Music Explorer FX.
The new version of Indaba Music's software was written in JavaFX; the old version was in Flash.
In my personal opinion I would not use JavaFX for web. Simply because HTML5 is crushing everyone in sight. Now, I totally recomend the use of JavaFX for desktop applications.