If Swing is deprecated, what is the alternative? - java

I heard that apparently Swing is being developed no longer. I like Swing and use it all the time.
What should I now be using instead?

I never heard such thing and still developing swing apps. Don't give wings to rumors.
But as an alternative you can use JavaFx or swt or buoy.

You probably read something about the 'Swing Application Framework', which while built using Swing, is not 'Swing'.
From Swing Application Framework - Status and Roadmap.
Development on an open source Reference Implementation called appframework was begun in 2006.[1] It was originally expected that this implementation would be the means for integrating JSR 296 into the upcoming Java SE 7 (Dolphin) version of the Java programming language, and the project was scheduled to be included in milestone 5 of the JDK7 development. However, in August 2009, it was announced that the project would not be included due to an inability to reconcile design flaws and achieve consensus among the JSR 296 team before the milestone 5 deadline.[2]
The original Swing Application Framework implementation has been put on hold indefinitely.[3] The last public release of the appframework project is version 1.03.[1]

Older question, but worth a reference:
Is JavaFX replacing Swing as the new client UI library for Java SE?
Yes. However, Swing will remain part of the Java SE specification for the
foreseeable future, and therefore included in the JRE. While we recommend > developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.
http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6

Jan 2019 Latest
For reference, AWT & Swing have been moved to java.desktop since Java SE 9. You can watch for future changes here. JavaFX (added to JDK since 8) was removed from the official JDK in Java 11. So its hard to say what is "official" anymore. However JavaFX's development has increased since the decoupling, with its new home here.

The Standard Widget Toolkit.

There is nothing wrong with swing. Personally i don't like SWT. You have to read input-values from widgets and store them in normal variables before a dialog is disposed.

Related

Is JavaFX complete replacement of Swing?

I had a Java Desktop Application in which graphical user interface had designed in swing. After we came to know that JavaFX replacing Swing We have replaced graphical user interface with JavaFX.
"6. Is JavaFX replacing Swing as the new client UI library for Java
SE? Yes. However, Swing will remain part of the Java SE specification
for the foreseeable future, and is included in the JRE. On one hand,
Swing is widely used in existing Java desktop applications, but relies
on an old architecture, which requires a certain level of expertise
and specialization. On the other hand, JavaFX features a set of modern
UI controls that can be skinned using standard CSS techniques. While
we recommend developers to leverage JavaFX APIs as much as possible
when building new applications, it is possible to use Swing and JavaFX
within the same application, allowing developers to extend existing
Swing applications."
Now we heard that Oracle donate the JavaFX toolkit to the open source community and OpenJDK Community had agreed to take it on.
The JavaFX toolkit evolved from the F3 project at Sun. Initial
releases were based around the JavaFX scripting language, however, in
2011 the toolkit was completely rewritten in Java and released by
Oracle as JavaFX 2.0. In October 2011 Oracle announced that it would
donate the JavaFX toolkit to the open source community and by November
2011 the OpenJDK Community had agreed to take it on.
I do not think so JavaFX is stable. It has no quick support. Document are not enough explanatory. It does not release internal memory when stage is closed. My application is multithreaded application and most of time taken by my application in updating status of each individual thread. Self contained copy of JRE in native bundle does not reliable, we have to replaced it with JRE folder that resides into JDK.
It's really frustrating and I wonder, if JavaFX is fit to develop the Java Desktop application.
According to Oracle, JavaFX is a replacement for Swing:
http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6, question 6, says:
Is JavaFX replacing Swing as the new client UI library for Java SE?
Yes. However, Swing will remain part of the Java SE specification for the foreseeable future, and therefore included in the JRE. While we recommend developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.
Is JavaFX complete replacement of Swing?
I think that not,
most of components are halfsized in compare with Swing (price for development ???),
implementations in JavaFX8 (accesible with Java8) has one important point Swing JComponents could be accesible from JavaFX containers and JavaFX Components will be accesible in Swing JContainers (implemented in newer JavaFX2.2),
then JavaFX will be accesible for development of DeskTop applications
still question is if will be possible to add JavaFX TextArea together with Swing JTextArea in one JPanel or vice versa (Panel from xxx.scene.xxx)
more (the best infos, roadmap, development...) on FX Experience (notice occasionally is down :-)
Update as of 2020
JavaFX technology has been going quite well in the ensuing years after this Question was originally posted. Java is regularly released on its 6-month train schedule, and JavaFX releases have arrived at the same pace.
Oracle Corp. has completed the process of making JavaFX open-source, known as OpenJFX. The codebase is now housed as a sub-project on the OpenJDK project. Leadership has been assigned to the Gluon company, with Oracle’s continued support.
The popularity and community seem to be growing. The competitors have fallen away, such as Microsoft Silverlight and Adobe Flash both having died.
Oracle continues to support Swing as a required part of any Java SE implementation, but only in maintenance-mode. JavaFX, in contrast, is under constant active development.
Oracle sells support for JavaFX, as do other vendors such as Gluon and Azul Systems.
Some vendors supplying Java implementations bundle the JavaFX/OpenJFX libraries with their JVMs. These include Azul Systems with their ZuluFX product, and BellSoft with their LibericaFX product.
Though cutting-edge presently, there is work being done to build a native apps for iOS and other platforms using OpenJFX with ahead-of-time compilation using GraalVM.
Delivering a JavaFX desktop app is often done by bundling a JDK inside. This produces a “double-clickable” app. Bundling a JDK is more easily done by modularizing your code with JPMS. By leveraging JPMS, a developer can make use of the jlink and jpackage tooling.
See:
Java Client Roadmap Update by Oracle, 2020-05
JavaFX FAQ by Oracle
OpenJFX
JavaFX page on Wikipedia
OpenJDK wiki page for JavaFX

Where to get information about API changes between JavaFX 2 and 8?

Where can i find informations on API changes between JavaFX 2.x and JavaFX 8? When i try to let my project run on a JDK 8 preview, i see that some things are broken - even if some of that might have its reason in the immaturity of a preview version, i'd also like to know how the APIs and the CSS changes between the two versions.
Once JDK8 released most probably there would be "JavaFX Compatibility Guide" posted, similar to JDK one.
But anyway JavaFX 8 is expected to be backward compatible to JavaFX 2. If you met any issues, please, file them at http://javafx-jira.kenai.com
all important (news, roadmap, rellease candinates) is on FX Experience
Apart from browsing jira and checking what features are targeted for Lombard (= JavaFX 8), and following FX Experience, you can also find some information about new features on the wiki, such as:
3D features
Rich Text API
TreeTableView

Creating a Java Desktop UI which can be understood by Eclipse and Netbeans

Netbeans recently dropped support for Swing based Java Desktop Applications from version 7.1 onwards. Till that point I had always imagined that creation of Java Application User Interfaces would be cross platform. I thought that a Swing UI created in Netbeans designer could be easily understood and edited in Eclipse but apparently now I realize that it is not the case.
Is there a way to make the Java Application User Interface by not depending on IDE-specific Java UI designers? That is a form of UI description, can be XML or something that can be edited on the different IDEs that people would like to use.
That post starts..
I just installed NB 7.1 Beta, and tried to open one of our many Swing Application Framework-based applications, ..
OK. You can stop reading there, sounds like JSR 296 which has been dying for years. Pure Swing apps. should be fine.

Desktop GUI framework

I tried to create a new Swing GUI desktop application template using NetBean 7.0 and just found NetBean has a disclaimer:
"Note that JSR-296 (Swing Application Framework) is no longer developed and will not become part of the official Java Development Kit as was originally planned. You can still use the Swing Application Framework library as it is, but no further development is expected."
So does it mean swing will stay the same from now on and nothing new will be added? What will that impact the applications using Swing? Do I need to consider other GUI frameworks instead? What would be the best framework option for a scientific plotting and graphic heavy application?
Thanks.
Swing is part of JAVA since 1.2 and it is part of the JAVA STANDARD. It is not going anywhere any time soon.
The JSR-296 (Swing Application Framework) was a framework to simplify and help developing in swing, which didnt go very far. Netbeans uses it internally. If using JAVA 7 then, like many other netbeans specific libraries, you need to ship it separately with you app, because it is not standard.
So, feel free to develop in swing. A pure swing app WILL WORK on any JAVA STANDARD on almost any platform for a long time to come. If you use the SAF, thats also OK, but that is not standard and its pretty much dead, so just remember to ship the jar with your app.
Hope that clarifies the situation.

Is Java Swing out of date?

I downloaded Net Beans IDE and created a new desktop aplication. I choose it to be Swing app. The IDE displayed that the Swing framework is out of date and will not be supported in the future.
Does this mean that Swing is out of date? And if so what are the most recent frameworks that can be used to develop desktop applications?
thanks
In NetBeans the Desktop Application project type is a project based on an external library that was supposed to be the Swing Application Framework (which does things like session state of GUI controls and resource bundle management) but never matured. So that project type is outdated.
However Swing itself (the GUI platform) is `current' in the sense that it is the foremost GUI toolkit that Java has and will continue to have for some time.
The Swing Application Framework (JSR296) was a project intended to extract the common elements for developing applications with Swing. It is safe to use but is no longer being developed. The official page https://appframework.dev.java.net/ suggests a couple of alternatives, including using the netbeans platform itself and, given how greatly netbeans has matured, I would be keen to investigate this approach.
Swing itself is fine, it'll be around as long as Java is. Though in saying that desktop Java has never really taken hold in the same way other flavours have.
AFAIK Swing is definitelly not out of date and will be even enhanced in JDK7
Maybe you should show us screenshot, it might be misunderstanding
I think something wrong with your netbeans. Can you show some screenshot?
The future of swing

Categories