Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I need a way to:
Create a GUI based front end to a database (MS SQL Server or MySQL).
I want it to be capable of running on Windows,Mac & Linux.
I want to be able to run the GUI as a desktop application or through a web browser.
(some people aren't allowed to install applications on their desktops and some people don't have access to web browsers.)
I need support for rich dynamic content, graphs, tables, possibly videos.
A nice IDE to generate the GUI where I can visually create and then code.
I don't want to deal with different web browsers interpreting the layout differently.
I have programming experience but plan on hiring a professional to get this project started. It is currently for a small business but has the potential to reach enterprise level with hundreds of users. This is a long term project. Some people say Java is a slow horrible language. Some people say it is great and many enterprises and financial institutions run java.
I have done quite a bit of research on oracle's website but am still lost.
Java? Java FX? Swing? JavaEE? Tomcat? Java webstart?
Where do I even begin. I don't even know what book to buy. If anyone can point me in the right direction I would greatly appreciate it. Maybe Java isn't even right for this?
Java is great for just about every project. But lets address your points.
1: Java can build a GUI and it can connect to Databases there are many APIs to make this easier, like JDBC.
2: Java is build for just that. Due to Java Runtime Environment which virtualises the execution it is easy to build Java based Applications for multiple Operating Systems.
3: This one could be a bit tricky since you would build an Applet for the browser and not an Application. But hey Java is just about the only Language that allows you to build an Application and an Applet for browsers in one step. Which is also the reason for it's big success. But beware companies may block Java in browsers for security reasons.
4: Java is capable of producing every graphic you can image a great example is Processing.
5: Well NetBeans and Eclipse both have great plugins for that. I personally love the Window Builder for Eclipse.
6: An Applet will give you that because it defines it's layout. Browsers are just running the Applet and are not doing any interpretations.
As for Java being slow: Naturally since Java Applications are run in a virtual environment they are slower then Applications developed in say C++. But this allows for Java Applications to be easily released for Windows, MacOS and Linux at the same time. Also Java uses some great technics like "Adaptive optimization" to increase it's speed and today Java isn't really all that much slower than other Languages (but still slower).
You can refer to the Java-Article on Wikipedia for some more info on Java.Link
I want to be able to run the GUI as a desktop application or through a
web browser. (some people aren't allowed to install applications on
their desktops and some people don't have access to web browsers.)
In this case Swing might not be the best solution since running a moderately Swing app in a browser as an Applet is a pain.
Java WebStart is a nice solution, but the application doesn't really runs in the browser: it just starts from the browser. If this is OK, than JFormDesigner http://www.jformdesigner.com/ is the best tool you can get.
If the application must run in the browser and without Java than you can achieve something similar with a RIA web application and package it in a similar way PhoneGap does mobile devices, e.g. with http://qt-project.org/doc/qt-4.8/examples-webkit.html and bundle the server together in background.
For the UI with this RIA framework http://www.sencha.com/products/extjs/ there's also a very advanced GUI designer: http://www.sencha.com/products/architect/ if that's an important part, but of course in this space there are many alternatives.
Related
After five and a half years full-time work on a product ranking engine project, which revolves around a 64,839 line applet, the browser companies have seen fit to dump applets.
At this point I am in no position to convert the applet to another language (unless I get a huge injection of funds to hire a team of programmers). My partner is not going to support me for another two years.
I know the questions are rather vague and I should be keeping up with the latest tech, however I've had chronic earaches for 14 years that affect memory and concentration, so programming is difficult enough without trying to keep up with the latest developments in software as well. The reason I am asking for advice is that I don't want to make another monumental screw up.
Question 1: My understanding is that Java Web Start launches the application, but it then cannot communicate back to the JSF web page any more (JSF2.0). Is there any way of getting around this?
Question 2: Can anyone suggest any other options other than re-coding the whole thing?
Question 3: Is it likely that applets will be altered to use the latest plugin format or are they gone for good? Does anyone have any inside information on this?
Overview of the applet's requirements:
The applet allows a user to customise some or all of the product ranking criteria, which has been preset by a panel of knowledgeable experts, to their own particular needs. The criteria is stored and edited via graphs (custom painted jPanels).
The ranking criteria can be altered entirely using the mouse (to change the graph shapes), though some values can be entered using the keyboard if the user wishes. Once customised, the applet is then used to submit the changes to the ranking engine server.
It is also used to allow third party experts to alter the ranking criteria to create their own product usage category ranking criteria. The third party expert can then place links on their own web site that will allow users to rank products using the third party expert's own ranking criteria. This allows anyone to create their own ranking criteria for use by others.
The applet uses a plugin bean that is also used in a standalone Java editor application, which is used to create a product usage ranking criteria file from scratch (the editor is 77,710 lines of code, though 61,257 lines of that is the plugin which is also used in the applet). This means most likely having to convert the editor as well, as the two are inextricably linked. The plugin basically is the applet and also the editor.
The plugin can capture, edit and store ranking criteria for virtually anything the human brain can rank. Thanks to the graphs, it can use any attribute that the brain uses, and for which we have no formal system of measurement; hence why the applet is so damn big.
Your question is probably too broad for Stack Overflow, but I'll give a brief response.
Java Web Start
Java Web Start is probably the best route for you. This technology is basically a convenient way for a user to obtain, install, and run a Java desktop app. The web browser is only used to initially download a small XML file describing your app and where to get the app. The Java Network Launching Protocol (JNLP) defines these pieces of information stored in that XML file. Your app will be downloaded from a server, and saved to the local machine. A Java Runtime Environment (JRE) can be downloaded and installed if need be as part of the process.
By default the app runs within a security sandbox similar to Java Applets. But you can sign your app and define security protocols to break out of some of those restrictions including making network connections.
The bulk of your programming would remain intact. The app is still pure Java, running in a JVM. You would need to do a bit of reprogramming to be a desktop app rather than packaged as an Applet. And you would have to learn about easing those sandbox restrictions. And your app will have a menu bar of its own as a full-fledged app, so you may want to take advantage of that. But the guts of your app would remain the same.
Over the years, Sun & Oracle have put efforts into improving Java Web Start. Unfortunately it came too late after Java-on-the-desktop had lost too much mind-share. And Swing never got the overhaul it so desperately needed. So Java Web Start never went big-time. But Java Web Start does work as advertised, so give it a try.
While there were some security issues years ago, I believe they have been resolved long ago. The many infamous security problems with Java were largely involving the web browser plugins bridging between browsers and the Java JRE; those problems do not affect Java Web Start (though you should do your own research to confirm).
For the general public, Java Web Start may be too much to ask of new, anonymous, and less-motivated users. For a commercial product with a user-base of eager customers, it may the perfect solution for you. I suggest you do some more study, read the Wikipedia page, study the Oracle technology page, look at the Tutorial, read this overview by John Zukowski that includes an example of network (making socket connection to time.nist.gov), and so on.
Vaadin
The Vaadin framework is an open-source free-of-cost professional user-interface development framework that uses pure Java to run your app on a server in a Java Servlet web container while automatically generating a user-interface using standard web technologies (HTTP, HTML, CSS, JavaScript, GWT, WebSocket, etc.) for presentation within a regular web browser (Firefox, Chrome, Safari, IE, Edge, etc.). As a graybeard, I think of Vaadin as an X Window System for the new millennium: The user interacts with screen widgets on their local computer but the business logic of the app is executing on the server, and the server is updating the remote UI as a result of that business logic executing.
Vaadin is not yet-another-web-templating system. Instead, your app is written in pure Java. No need for you to learn the alphabet-soup of web technologies listed above. Vaadin takes care of that for you, auto-magically. You say in Java “I want a label, then a field, and a button” and Vaadin makes those appear in the web browser.
Using Vaadin would allow you to retain your Java code for the business logic part. But you would need to re-write the user-interface parts to use Vaadin widgets instead of Swing widgets. This would not be so terribly difficult as Vaadin was inspired by the general style of Swing, defining layouts governed by layout managers in which you place your various widgets (fields, labels, buttons, etc.).
Vaadin can make very professional business-oriented apps that feel almost like desktop business apps. Tip: I prefer the Reindeer theme for business apps over the newer Valo theme.
But you mentioned some kind of free-form drawing canvas in your Swing applet. That may be a sticking point. I do not know of such a widget for use within a Vaadin app. I am not saying there is no such thing, I just do not know of any. There are slider widgets that may useful, but I don't clearly understand your needs in that regard.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have read an article about Xamarin was buying RoboVM and enables developers to write mobile apps in Java for cross-platform. I am not sure if it is possible now to use Java for developing cross-platform mobile apps. Is there any reliable tools where I can write in Java for cross-platform mobile apps development? Is it a good choice to choose Java only for potential cross-platform mobile apps? I don't consider using C, C++, C# for that purpose since I have never been focusing on one of them. I apologize for the fans of those langauges. Or Is it a better choice that I better work with Java for Android apps and Swift for iOS apps? I plan to choose Java as a main language for all web apps, cross-platform mobile apps and robotic programming development.
I've been using Codename One for quite a while now. Libgdx wasn't exactly an option as I'm not a game developer.
I played a bit with RoboVM before picking Codename One and it seems that it's more about Java for iOS and not about WORA (Write Once Run Anywhere). This might be a good choice for you if that's what you want but I prefer WORA. I tried the RoboVM FX bindings and they were just horribly broken in basic ways.
A few things I love about Codename One are:
Support - I have never used a product with such amazing free support. You get answers within a day at the latest and that really sealed the deal for me.
No need for a Mac - I use my Mac at home but in the office I need a PC.
Customization and familiarity - this is pretty much Swing but WAY better. Like we always wanted Swing to be as they put it...
The docs used to suck but they made a big push on it and it shows. Now if only they could fix the IntelliJ/IDEA plugin to the level of the NetBeans plugin I'd be golden!
Depending on what you're trying to write, libgdx might be a good solution.
You write your code once in java and it compiles to basically everything (even html5!)
You have to adhere to its coding conventions and use it's classes though. (Which are great for game development, not so much for other things... but you could still probably do whatever you want with it).
As far as I know they are not compatible with Java, but they claim that if you know Java you'll be fine with C#.
I found few interesting weird facts on their website about the transition... source
In Java, you can pass parameters only by value, while in C# you can pass by reference as well as by value. (C# provides the ref and out keywords for passing parameters by reference; there is no equivalent to these in Java).
In a Java switch statement, code can fall through into the next case section, but in C# the end of every switch section must terminate the switch (the end of each section must close with a break statement).
....
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am a Windows developer (with some iOS Objective-C experience) and I am trying very carefully to choose the correct language to make a fairly simple daemon for the MacOS.
The app will download and upload files, communicating with our .NET web services that are already in place.
The installation will be done by non-technical everyday users, so asking them to do a lot of configuration/scripting on their end is not an option. A sleak package is a requirement.
I see my choices as:
Objective-C
Java
Mono
Scripting
Objective-C has the advantage that it is native, but I'm not the strongest with this language yet.
Java is very easy, but do all users have it? Is it going to be a problem asking people to install it?
Mono will let me leverage my .NET skills, but will it install elegantly as a daemon?
Scripting may be an option as it is very simple what the app has to do, but is this the norm, to deliver a product like this?
--
EDIT
There will be no GUI. I'm okay with not hiding the code, although a UID/PWD will be necessary in order to access the webservices (different for each client). It will always be running, for all clients.
Objective-C/Cocoa or C (esp. using Core Foundation) would certainly give you the most native implementation with performance and OS integration benefits.
Java is reasonable and will be built-in. You'll need some basic scripts to bootstrap it, but not much.
Mono is also reasonable and can be relatively easily installed by the user. You'll need to point them at the download page and specify that they only need the runtime, but it's do-able. Depending on licensing, you may be able to include the Mono runtime installer package within your own installer package so it's installed at the same time as your daemon.
Naturally, scripting languages will most likely leave your code exposed and modifiable, so you may want to avoid that route if that's of concern.
Regardless of the language used to develop the daemon, you'll want to consider installation & management.
For installation, Mac users are used to two installation methods: installing via an Installer .pkg file that the user double-clicks and then is brought through the installation process or by dragging an application into their Applications folder and double-clicking to launch. As a developer, the former gives you a lot of control over including README/license text, running pre- & post-flight scripts, building meta packages to install one or more packages (as mentioned above re:possibly including Mono runtimes right in your own installer), and also gives the OS & user the ability to see what files will be installed, where, and when (post-installation) if they so wish. Alternatively, many daemons will be actual Mac OS X applications which will then install themselves as background processes upon the first launch. The former would be independent of your language selection, but the latter would lean towards a Objective-C/Cocoa implementation.
This brings me to management. Most daemons will want to be run through launched as either a LaunchDaemon (for all users, typically launched at boot) or a LaunchAgent (for particular users, typically launched at login). If you integrate well with launched everyone will be happier and should be do-able in any of your language options.
The question then becomes will the user need to manage the daemon at all? If so, this is most frequently implemented as either a MenuExtra or a Preference Pane. In either case, the daemon could be developed in any language and controlled (esp. via launched) by the MenuExtra/Preference Pane, but in some cases the MenuExtra could actually function as the daemon and so you'd want to develop in Objective-C/Cocoa.
See also: Apple's Designing Daemons & Services documentation.
Objective-C is the best bet, native, fastest and suitable for a daemon, otherwise you can develop it in Java 6 that is already installed in Mac OS X even though could be not so simple to install it as daemon.
My advice is to go with objective-C or plain C ...
However if you are accustomed to working with .NET you can install mono and use mono-service to run the service as a daemon even on OS X, but in this case users will must install mono on their machine, so if you can deal with this trade off could be a viable solutions .
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I want to start to make a chat client that runs in web browsers, upon a colleges requests. Its my first time doing something like this, so i made some research about this mostly about HTML5. I did research on the platform itself, how fast and how used it is, but my most important factor was: mobile support
I plan to develop this chat for a long while for experience because, as a coder/programmer I am still inexperienced.So i was thinking in the future as well. i have a forum community with pretty limited chat access. I want to change that as well, and as an extra include mobile support.
i researched Flash, java and HTML5, the two most obvious choice in web applications, and pretty much the new comer HTML5.
Flash is more widely used as web app(at least what i saw and found.), and its more designer oriented than programmer, but many chats are written in this, and are used. but there is no mobile support for it, to my knowledge. thats hinders my future plans.
Java, is a robust programming language, and saw a few webchats in this, but my main issue with this is performance: its much slower than flash. But at least there is mobile support, at least the android mobiles.
as for HTML5....its pretty much still a child, not all web browsers support it fully but the major ones support web socket already, except IE9. and IE9 is the most used web browser, sadly. And i cant find any support for it on mobiles yet.
And i don't know any other platforms out there in the Internet that could do the same as the above three, but i'm open.
So my question is: Which is the best platform for writing a webchat, that lest me do mobile support at a latter stage?
No, the correct answer is: Understand which method is quick to deploy, cost-effective and easy to learn. You'll need to integrate languages to make this work. HTML 5 is the latest and greatest, that's one. JAVA ~ still in demand on the Android side..learn it..
Flash is dying..don't learn that.
Windows ~ .NET..don't count this out...Microsoft is planning on coming out with a mobile platform...this is still good to learn..always learn a language that's going to give you job opportunities in the future.
You cannot write a chat in HTML 5 alone (because it operates on the client and there needs to be server code), you would need PHP or JSP for that.
I wouldn't use flash except if you are already very proficient in it because:
it needs an extra plugin
it frequently blocks or crashes some browsers
I think it is difficult to develop and I am not sure if the development software is free
So my choice would be Java Applet by default. It needs an extra plugin but it is much more stable than flash and you need it for many applications anyways but it has so much functionality that is very easy to make a chat with it.
P.S.: Java's speed is absolutely no problem for a chat. Java is maybe 10% behind C++ depending on the application but we are talking about languages like Flash or PHP so Java is not slower but it doesn't matter anyways because a chat has next to no resource requirements.
The correct answer is: it depends. You can implement such a program using many technologies. Each of these technologies have different characteristics and pros and cons but you have mentioned that this is going to be made for a university task. This way i recommend you to choose HTML5, this is a quite new technology, i think it worths it to have a little experience in that!
If you want to have the least work with this project, you should use java.
This is MY opinion.
You should have a look at nodejs:
http://nodejs.org/
Also the socket.io module for nodejs which allows you to use websockets as a transport mechanism for capable browsers and provides fallback methods for older browsers:
http://socket.io/
There's a node and socket.io chat tutorial which might be helpful and a working chat demo based on node (though I couldn't see any reference to socket.io when I reviewed the code).
I would not discount using Flash. It is still an industry standard in web development. It is way faster than a Java applet, but you are right, Java is not going anywhere. Flash allows you to deploy your project to the web, stand alone application on Mac and PC, and on mobile.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
Can we run or develop apps for iPhone in Java?
Have a look to these links and answer:
http://www.iphonefaq.org/archives/9731
http://www.j2mepolish.org/cms/leftsection/documentation/platforms/iphone.html
http://www.ibm.com/developerworks/opensource/library/os-eclipse-iphone/
Currently, there is no JVM running on the iPhone. This means that the only way you have to develop apps for iPhone in Java is to have a compiler that will compile your java code down to Objective-C code.
There are several solutions that do exactly that:
Codename One - focuses on building applications using Java with visual tools and simulators. Open source with a SaaS backend that removes the need for a Mac.
XMLVM - a translator to convert Java bytecode to C/Objective-C. Open source, but requires writing iOS specific code at the moment.
There are also several proprietary solutions but I have no experience with them. E.g. Software AG has a tool called web objects.
Sun found they could port Java to the iPhone, but the SDK license prohibits it. So this is not a technical but a political issue.
I would say: No
If you want to create "real" native iPhone applications you will have to go with Objective C and the iPhone SDK
There are other ways like http://phonegap.com/ but I personally have no experience with this project.
Webapp can be developed in Java of course, but you're not allowed to run Java applications ON the Iphone (VMs are not authorized on the device).
There is some effort in Java to objective-c conversion, as with XMLVM (check the Google TechTalk video).
At the end what I can conclude is that one can develop iPhone web apps easily with Java.
For developing native apps for iPhone in Java one may use alcheMo or XMLVM with a little working.I have no experience in alcheMo or XMLVM but surely looking forward to it.
Thank You All.
there is an implementation of a java virtual machine called "Classpath", but the drawback is that you may only get it using Cydia/Installer.
Means, you need to jailbreak your iphone in order to be able to install the JVM.
the gui can be designed like an AWT-Gui.
in general: no solution (apple does not allow applications that run other applications on their devices)
if you don't mind hacking the devices your application is deployed to: yes, there shouldn't be a big problem. there is a large amount of tutorials how to hack your iphone, if you're interested...
EDIT: there is a problem! If you don't have the file libuicaboodle every Java-GUI-App for iPhone is looking for, you won't be able to run the app. Is there anybode who still has this file? Can't find it anywhere anymore :o(
regards
there is several ways to write an iphone application on java
by using xmlvm converter to objective c but is hard but it is the suitable and the compatible way to do ur application u need to learn xml language
An interesting approach is combining the Google Web Toolkit with Appcelerator Titanium for developing iPhone applications using Java.
Google Web Toolkit (GWT) allows compilation of Java code into Javascript, while Titanium allows creation of native-looking iPhone applications in Javascript. I have started a project called "gwt-titanium" to combine the two, you can find an explanation about the project and building instructions on the blog at iPhoneJava.org.
Good luck!
What about other Java to native compilers I though there was one calledJet?
This compiles java to native.