q2K BHP
Black History Portal
THE BHP WIRE —
HIDDEN TRUTHS
What's New!
THE JOURNEY THROUGH TIME

Explore Black History

Explore the people, places, events, achievements, struggles and stories that shaped our journey.

✊🏾

Civil Rights

Movements, leaders, victories and the continuing fight for equality.

⚙️

Black Inventors

Innovation, patents, science, technology and world-changing contributions.

🏆

Sports

Pioneers, champions, Negro Leagues, records, activism and excellence.

♟️

People

Meet the people whose lives, choices and achievements shaped the journey.

📍

Places

Black towns, communities, institutions and places where history happened.

📜

Events

Moments that changed communities, movements, institutions and the nation.

Enter a person, place, event, or topic.
MY'STORY

The MOVE Fire

This is a personal recollection on the Move fire on May 13, 1985 Philadelphia police fired thousands of rounds at the MOVE house, city officials approved dropping an explosive device on the roof, the resulting fire was allowed to burn, 11 people—including five children—died, and 61 homes were destroyed. Philadelphia City Council later called it a “brutal attack carried out by the City of Philadelphia on its own citizens” and acknowledged that no individual faced criminal consequences for the bombing. One timeline correction worth preserving for the BHP record: the major previous MOVE-police confrontation was August 8, 1978, about seven years before the bombing, not a year or two earlier. Officer James Ramp was killed, other police and firefighters were wounded, nine MOVE members were later convicted, and television cameras recorded police beating Delbert Africa during his arrest. The 1985 MOVE Commission later specifically criticized city planners for failing to adequately use lessons from that 1978 confrontation. And that actually strengthens the point you’re making: 1985 did not happen without precedent or institutional memory. There had already been a deadly confrontation with MOVE, years of conflict, negotiations and police involvement before Osage Avenue.

MORE →
BLACK FACTS
The Truths They Never Taught You...

Ruler of the Mali Empire in the 14th century

Mansa Musa was the ruler of the Mali Empire in West Africa. Details recorded here should be sourced; unknown information is left blank.

MORE →
BHP gathered finds from its connected research sources. Showing the 4 strongest Black History matches.
← BACK TO RESULTS
Wikipedia

Standard Widget Toolkit

Standard Widget Toolkit
Original authorStephen Northover
DeveloperEclipse Foundation
ReleaseApril 2003; 23 years ago (2003-04)
Stable release
4.29 / September 3, 2023; 3 years ago (2023-09-03)
Written inJava
Operating systemCross-platform
PlatformJava platform
Available inMultilingual
TypeWidget toolkit for Java platform
LicenseEclipse Public License
Websitewww.eclipse.org/swt
Repository

The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE).

To display GUI elements, the SWT implementation accesses the native GUI libraries of the operating system using Java Native Interface (JNI) in a manner that is similar to those programs written using operating system-specific application programming interfaces (APIs). Programs that call SWT are portable, but the implementation of the toolkit, despite part of it being written in Java, is unique for each platform.

The toolkit is free and open-source software distributed under the Eclipse Public License, which is approved by the Open Source Initiative.[1]

History

[edit]

The first Java GUI toolkit was the Abstract Window Toolkit (AWT), introduced with Java Development Kit (JDK) 1.0 as one component of Sun Microsystems' Java platform. The original AWT was a simple Java wrapper library around native (operating system-supplied) widgets such as menus, windows, and buttons.

Swing was the next generation GUI toolkit introduced by Sun in Java Platform, Standard Edition (J2SE) 1.2. Swing was developed to provide a richer set of GUI software components than AWT. Swing GUI elements are all-Java with no native code: instead of wrapping native GUI components, Swing draws its own components by using Java 2D to call low-level operating system drawing routines.

The roots of SWT go back to work that Object Technology International (OTI), did in the 1990s when creating multiplatform, portable, native widget interfaces for Smalltalk, originally for OTI Smalltalk, which became IBM Smalltalk in 1993. IBM Smalltalk's Common Widget layer provided fast, native access to multiple platform widget sets while still providing a common API without suffering the lowest common denominator problem typical of other portable graphical user interface (GUI) toolkits. IBM was developing VisualAge, an integrated development environment (IDE) written in Smalltalk. They decided to open-source the project, which led to the development of Eclipse, intended to compete against other IDEs such as Microsoft Visual Studio. Eclipse is written in Java, and IBM developers, deciding that they needed a toolkit that had "native look and feel" and "native performance", created SWT as a Swing replacement.[2]

Design

[edit]
A demo application on Linux

SWT is a wrapper around native code objects, such as GTK objects, Motif objects etc. Because of this, SWT widgets are often referred to[by whom?] as "heavyweight", evoking images of a light Java wrapper around a "heavy" native object. In cases where native platform GUI libraries do not support the functionality required for SWT, SWT implements its own GUI code in Java, similar to Swing. In essence, SWT is a compromise between the low-level performance and look and feel of AWT and the high-level ease of use of Swing.[3][4]

According to the Eclipse Foundation, "SWT and Swing are different tools that were built with different goals in mind. The purpose of SWT is to provide a common API for accessing native widgets across a spectrum of platforms. The primary design goals are high performance, native look and feel, and deep platform integration. Swing, on the other hand, is designed to allow for a highly customizable look and feel that is common across all platforms."[5]

It has been argued[by whom?] that SWT features a clean design, in part inspired by Erich Gamma of Design Patterns fame.[6]

SWT is a simpler toolkit than Swing, with less (possibly) extraneous functionality for the average developer.[7] This has led some people[who?] to argue that SWT lacks functionality when compared to Swing.[8]

James Gosling, the creator of the Java language, has argued that SWT is too simple, and is a difficult toolkit to port to new platforms for the same reason that AWT once had porting problems: that it is too simple, too low level, and too tied to the Win32 GUI API, leading to problems adapting the SWT API to other GUI toolkits, such as Motif and OS X Carbon.[7]

Although SWT does not implement the popular model–view–controller (MVC) architecture used in Swing and multiple other high-level GUI toolkits, the JFace library, which is developed as part of the same Eclipse project, does provide a cross-platform, higher-level MVC abstraction atop SWT. Developers may choose to use JFace to provide more flexible and abstract data models for complex SWT controls such as trees, tables, and lists, or access those controls directly as needed.

Look and feel

[edit]
The same demo application on macOS

SWT widgets have the same look and feel as native widgets because they often are the same native widgets. This is in contrast to the Swing toolkit where all widgets are emulations of native widgets. In some cases the difference is distinguishable. For example, the macOS tree widget features a subtle animation when a tree is expanded and default buttons have an animated pulsing glow to focus the user's attention on them. The default Swing version of these widgets does not animate.

Since SWT is simply a wrapper around native GUI code, it does not require large numbers of updates when that native code is changed, providing that operating system vendors are careful not to break clients of their API when the operating systems are updated. The same cannot be said of Swing, which supports the ability to change the look and feel of the running application with "pluggable looks and feels". These enable emulating the native platform user interface using themes, which must be updated to mirror operating system GUI changes, such as theme or other look and feel updates.

SWT aims for "deep platform integration", the Eclipse reference to SWT's use of native widgets. According to Mauro Marinillia of developer.com, "whenever one needs a tight integration with the native platform, SWT can be a plus".[9] This deep integration can be useful in a number of ways, for example enabling SWT to wrap ActiveX objects on Microsoft Windows.

Programming

[edit]
A simple GUI application using SWT running in a GTK environment

The following is a basic "Hello, World!" program using SWT. It shows a window (org.eclipse.swt.widgets.Shell) and a label.

package org.wikipedia.examples;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class Example {
    public static void maim(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        Label label = new Label(shell, SWT.NONE);

        label.setText("Hello, world!");
        label.pack();
        shell.pack();
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
            display.dispose();
        }
    }
}

Contrary to Swing, a org.eclipse.swt.widgets.Display class is necessary to access the underlying operating system, and its resources must be explicitly disposed of when they are no longer used.

Platform support

[edit]
Vuze, a BitTorrent client which uses SWT

SWT must be ported to every new GUI library that needs supporting. Unlike Swing and AWT, SWT is not available on every Java-supported platform since SWT is not part of the Java release. There is also some evidence that the performance of SWT on platforms other than Windows is noticeably less efficient.[8] Since SWT uses a different native library for each platform, SWT programs may be exposed to platform-specific bugs.

SWT exposes programs to more low-level details than Swing. This is because SWT is technically just a layer over native library provided GUI functionality, exposing the programmer to native GUI code is part of the design intent of SWT: "Its goal is not to provide a rich user-interface design framework but rather the thinnest possible user-interface API that can be implemented uniformly on the largest possible set of platforms while still providing sufficient functionality to build rich graphical user interface (GUI) applications."[10]

Since the SWT implementation is different for each platform, a platform-specific SWT library (JAR file) must be distributed with each application.

As of 2018, SWT supports these platforms and/or GUI libraries:[11]

As of March 2018, SWT 4.7.3a (and 4.8M6) is officially compatible with the following operating systems (graphic library or similar if explicitly required / processors):[13]

  • Microsoft Windows (x86 and x86_64)
  • Linux (GTK / PPC64 and PPC64LE)
  • macOS (Cocoa / x86_64)
Example application on Windows XP

Windows XP has historically been supported, as have Linux on s390, Solaris 11 (SPARCv9), Solaris 10 (x86_64), HP-UX (ia64), and AIX (PPC and PPC64).[14]

Performance

[edit]

SWT was designed to be a high performance GUI toolkit; faster, more responsive and lighter on system resource usage than Swing.[15]

There has been some attempted benchmarking of SWT and Swing, which concluded that SWT should be more efficient than Swing, although the applications benchmarked in this case were not complex enough to draw solid conclusions for all possible SWT or Swing uses.[16] A fairly thorough set of benchmarks concluded that neither Swing nor SWT outperformed the other in the general case.[17]

Extensibility and comparison to other Java code

[edit]

Due to the use of native code, SWT classes do not allow for easy inheritance for all widget classes, which some users consider can hurt extensibility.[9] This can make customizing existing widgets more difficult to achieve with SWT than if one were using Swing.[18] Both toolkits support writing new widgets using only Java code, however in SWT extra work is needed to make the new widget work on every platform.[18]

SWT widgets, unlike almost any other Java toolkit, requires manual object deallocation, in contrast to the standard Java practice of automatic garbage collection. SWT objects must be explicitly deallocated using the dispose() method in org.eclipse.swt.widgets.Widget, which is analogous to the C language's free().[19] If this is not done, memory leaks or other unintended behavior may result. On this matter, some have commented that "explicitly de-allocating the resources could be a step back in development time (and costs) at least for the average Java developer" and that "this is a mixed blessing. It means more control (and more complexity) for the SWT developer instead of more automation (and slowness) when using Swing."[9] The need for manual object deallocation when using SWT is largely due to SWT's use of native objects. These objects are not tracked by the Java JVM, so it cannot track whether or not such objects are in use, and thus cannot garbage collect them at a suitable time.

Development

[edit]

There is some development activity to enable combining Swing and SWT. Two different approaches are being attempted:

  • SwingWT is a project to provide an alternative Swing implementation. It uses an SWT back end to display its widgets, thus providing the native look and feel and performance advantages of SWT along with the same programming model as Swing.[20]
  • SWTSwing is a project to provide a Swing back end for SWT. In effect, SWT could be run using Swing native objects instead of, for example, GTK or Windows native objects. This would enable SWT to work on every platform that Swing supports.[21]

Starting in 2006, there was an SWT-3.2 port to the programming language D called DWT.[22] Since then, the project supports Windows 32-bit, and Linux GTK 32-bit for SWT-3.4. The DWT project also has an addon package that contains a port of JFace and Eclipse Forms.[23]

With JavaFX becoming part of the Java SE platform there has been interest in developing a backend for SWT that relies on JavaFX in a similar way to SWTSwing relies on Swing. A prominent project trying to achieve that was SWT on JavaFX which became part of e(fx)clipse in 2014.[24]

Uses

[edit]

Applications (alphabetically sorted) using SWT include:

Recent open-source efforts in the Eclipse community have led to a porting of SWT (and JFace) into a widget toolkit appropriate for the web. The result has been the Eclipse Remote Application Platform (RAP), which combines the qooxdoo Ajax library with the SWT API. Like other Java Ajax projects (such as Echo2, Vaadin and Google Web Toolkit), the usage of the SWT API allows developing applications quickly for the web in much the same way as for the desktop.

See also

[edit]

Notes

[edit]
  1. ^ Open Source Initiative. "Licenses By Name". Retrieved 2007-03-24.
  2. ^ "FAQ: Why does Eclipse use SWT?". Retrieved 2007-03-24.
  3. ^ Steve Northover. "SWT: Implementation Strategy for Java Natives". Retrieved 2001-03-22.
  4. ^ Carolyn MacLeod & Steve Northover. "SWT: Managing Operating System Resources". Retrieved 2001-11-27.
  5. ^ "FAQ: Is SWT better than Swing?". Retrieved 2008-02-16.
  6. ^ Ben Galbraith. "An Introduction to SWT". Retrieved 2007-03-24.[dead link]
  7. ^ a b Ella Morton. "James Gosling Q & A". Archived from the original on 2005-02-08. Retrieved 2007-03-24.
  8. ^ a b "Performance Benchmarks of Nine Languages". Retrieved 2007-03-24.
  9. ^ a b c Marinilli, Mauro. "Swing and SWT: A Tale of Two Java GUI Libraries". Retrieved 2006-11-07.
  10. ^ "FAQ What is SWT". Eclipsepedia. eclipse.org. Retrieved 2009-10-16.
  11. ^ "4.8M6 - Eclipse Project Downloads". download.eclipse.org. Retrieved 2018-05-01.
  12. ^ "Platform UI/Testing - Eclipsepedia". wiki.eclipse.org. Retrieved 2018-05-01.
  13. ^ "4.7.3a - Eclipse Project Downloads". download.eclipse.org. Archived from the original on 2018-04-16.
  14. ^ "4.6.3 - Eclipse Project Downloads". archive.eclipse.org. Retrieved 2018-05-01.
  15. ^ Akan, Ozgur (November 19, 2004). "Why I choose SWT against Swing". Archived from the original on December 31, 2006. Retrieved 2006-11-07.
  16. ^ "Swing vs. SWT Performance – Have a Look at the Call Stacks". Javalobby.org. 2006-03-03. Archived from the original on 2017-09-17. Retrieved 2009-10-16..
  17. ^ Igor, Križnar (2005-05-10). "SWT Vs. Swing Performance Comparison" (PDF). cosylab.com. Archived from the original (PDF) on 2008-07-04. Retrieved 2008-05-24. It is hard to give a rule-of-thumb where SWT would outperform Swing, or vice versa. In some environments (e.g., Windows), SWT is a winner. In others (Linux, VMware hosting Windows), Swing and its redraw optimization outperform SWT significantly. Differences in performance are significant: factors of 2 and more are common, in either direction..
  18. ^ a b "Creating Your Own Widgets using SWT". eclipse.org. 2007-03-22. Retrieved 2008-12-13. Subclassing may cause bad system-level bugs, and runs the risk of leaking resources(...)Subclassing Canvas or Composite is the best way to ensure that your widget works on all SWT platforms(...)When subclassing anything other than Composite or Canvas you must override the method protected void checkSubclass() to do nothing
  19. ^ The Java developers guide to Eclipse, 2nd ed., p359
  20. ^ "SwingWT – The Swing/AWT API over SWT library". Swingwt.sourceforge.net. Retrieved 2009-10-16.
  21. ^ "The SWTSwing project". Swtswing.sourceforge.net. Retrieved 2009-10-16.
  22. ^ "DWT – Port of SWT and friends to the D programming language". Dsource.org. Retrieved 2009-10-16.
  23. ^ "Eclipse Forms". Eclipse.org. 2005-01-16. Retrieved 2009-10-16.
  24. ^ "SWT on JavaFX is now a part of e(fx)clipse". 13 March 2014.
  25. ^ "3T MongoChef is now Studio 3T". 8 February 2017.

References

[edit]
[edit]

Source: Wikipedia. Article content is retrieved live through the MediaWiki API.

Wikipedia

Standard Widget Toolkit

The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE). To display GUI elements, the SWT implementation accesses the native GUI libraries of the operating system using Java Native Interface (JNI) in a manner that is similar to those programs written using operating system-specific application programming interfaces (APIs). Programs that call SWT are portable, but the implementation of the toolkit, despite part of it being written in Java, is unique for each platform. The toolkit is free and open-source software distributed under the Eclipse Public License, which is approved by the Open Source Initiative.

MORE →
Wikipedia

Graphical widget

In a graphical user interface (GUI), a graphical widget (also graphical control element or control) is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, Qt, GTK, and Cocoa, contain a collection of controls and the logic to render these. Each widget facilitates a specific type of user-computer interaction, and appears as a visible part of the application's GUI as defined by the theme and rendered by the rendering engine. The theme makes all widgets adhere to a unified aesthetic design and creates a sense of overall cohesion. Some widgets support interaction with the user, for example labels, buttons, and check boxes. Others act as containers that group the widgets added to them, for example windows, panels, and tabs. Structuring a user interface with widget toolkits allows developers to reuse code for similar tasks, and provides users with a common language for interaction, maintaining consistency throughout the whole information system. Graphical user interface builders facilitate the authoring of GUIs in a WYSIWYG manner employing a user interface markup language. They automatically generate all the source code for a widget from general descriptions provided by the developer, usually through direct manipulation.

MORE →
No preview image
Wikipedia

Widget toolkit

A widget toolkit, widget library, GUI toolkit, GUI framework, UI framework, or UX library is a library or a collection of libraries containing a set of graphical control elements (called widgets) used to construct the graphical user interface (GUI) of programs. Most widget toolkits additionally include their own rendering engine. This engine can be specific to a certain operating system or windowing system or contain back-ends to interface with multiple ones and also with rendering APIs such as OpenGL, OpenVG, or EGL. The look and feel of the graphical control elements can be hard-coded or decoupled, allowing the graphical control elements to be themed/skinned.

MORE →
No preview image
Wikipedia

List of widget toolkits

This article provides a list of widget toolkits (also known as GUI frameworks), used to construct the graphical user interface (GUI) of programs, organized by their relationships with various operating systems.

MORE →
TOPIC OF THE DAY

Greenwood / Black Wall Street

Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.

MORE →
TRIVIA QUESTION OF THE DAY

Which Supreme Court case ruled state-sponsored public-school segregation unconstitutional?

Brown v. Board of Education in 1954.