Transient (computer programming)

In computer programming, transient is a property of any element in the system that is temporary. The term applies to transient applications, i.e. software for the end-user which is displayed with a transient application posture; transient data, which is discarded after it is no longer needed by the computation; and transient code which are subroutines or software components that are loaded in the system only for a fraction of the total run time.

Examples of applications of the term are described below.

Java
In the Java programming language,  is a keyword used as a field modifier. When a field is declared transient, it would not be serialized even if the class to which it belongs is serialized. In Java, methods, classes and interfaces cannot be declared as transient, because they are never serialized.

In Hibernate and other persistence systems, transient describes an object that has been instantiated, but is not associated with a Hibernate session, i. e. the object resides in memory but is not being persisted.

X
In the X Window System, a window is said to be transient for another window if it belongs to that other window and may not outlast it: a dialog box, such as an alert message, is a common example. This should not be confused with a window containing another window: contained windows lie entirely within their parents, but transients are separate windows which can generally be moved freely around the screen. Transient windows may be treated specially by the window manager, and unlike top-level windows (which can require user placement, as in twm), must never require any user interaction on appearing.

Operating systems
Transient also refers to a module that, once loaded into main memory, is expected to remain in memory for a short time. Today, the term is rarely used, and may be obsolete. The term Overlay is commonly used instead, and refer to a program module that is brought to memory when it is needed by the running program and then replaced with another when it is no longer needed, so a program had lower memory requirements. Program modules were written to allow different modules to share the same memory region and the main program itself was responsible of exchanging modules between disk and memory as necessary.

In the mid-to-late 1960s, mainframe computers, such as the IBM System/360, had memory sizes from 8 KB to 512 KB. In order to conserve memory, transients were small modules that supported a specific task, and were swapped in and out of memory. The concept of transient area is part of Mythical Man-Month's discussion on design and the use of main memory. The operating system for the S/360 had two areas reserved for transients that supported input/output operations. These were referred to as the "logical transient area" and the "physical transient area." If an application program, for example, needed to use the printer, transients that supported printing were brought into the transient areas. If an application needed to use tape drives, transients that supported tape drive access were brought into the transient areas. The IBM 1130 of the same era used part of the first 4K of memory as a transient area.

In the 1980s, MS-DOS reloaded the transient portion of COMMAND.COM between programs or user commands.

Message passing
At the level of message passing, transient communication means the way by which the messages are not saved into a buffer to wait for its delivery at the message receiver. The messages will be delivered only if both the systems (sender and receiver) are running. If the receiver is not running at the send time, the message will be discarded, because it has not been stored into intermediate buffers.