net.time4j.engine.package-info Maven / Gradle / Ivy
/**
* Defines the common generic schemes and interfaces of chronological
* systems. Users which only need an entry point to standard chronologies
* should rather consult the main package
* net.time4j.
*
* Ein chronologisches System contains chronological elements and
* (as time axis) also time units. Given a concrete time point on a
* time axis the (primary) elements compose the coordinates of the
* time point on this time axis which is directed into future. This
* time axis might be the global UTC-timeline. In general a time axis
* is mathematically spoken a line where a time point is described by
* some suitable coordinates. This time axis is also scaled by mean of
* a system of fixed predefined time units. These units mainly serve for
* the time arithmetic and calculations of durations/distances on a
* time axis.
*
* The main difference between elements and units is such that elements
* directly refers to the state of a time point and are dimension-less like
* coordinates on a time axis while time units have the dimension of a
* length respective duration.
*
* The available abstractions of this package allow type-safety and also
* the necessary flexibility in order to build new chronologies from the
* scratch. Concrete implementations either start with the base class
* {@code TimePoint} or with the date class {@code Calendrical} and register
* elements, time units and calculation rules in the associated
* Chronology
which contains the chronological logic.
*
* Values of elements are usually modelled as integers but can also be
* defined in other types like enums. The value range of an int-primitive
* is usually no real limitation because each chronology can define
* sufficiently large elements (with small precision). For example
* a GPS-time also knows a week element. The detailed value range of
* a chronological element is documented in the concrete element types.
*/
/*[deutsch]
* Definiert die allgemeinen generischen Schemata und Schnittstellen
* von chronologischen Zeitsystemen. Anwender, die nur einen kurzen Einstieg
* in Standardchronologien suchen, seien auf das Hauptpaket
* net.time4j verwiesen.
*
* Ein chronologisches System enthält chronologische Elemente und
* (als Zeitachse) auch Zeiteinheiten. Den Elementen sind in einer konkreten
* Zeitpunktinstanz Werte zugeordnet, die zusammen eine Koordinate auf einer
* in die Zukunft gerichteten Zeitachse festlegen. Diese Zeitachse kann
* z.B. die UTC-Weltzeitlinie sein. Allgemein ist eine Zeitachse mathematisch
* gesehen eine Linie, auf der ein Zeitpunkt durch geeignete Koordinaten
* beschrieben wird. Zur Chronologie gehört auch eine Skalierung der
* Zeitachse mittels eines Systems aus fest vordefinierten Zeiteinheiten.
* Diese Einheiten dienen vor allem der Zeitarithmetik und Dauerberechnung,
* definieren also, wie Längen auf der Zeitachse berechnet werden.
*
* Der wesentliche Unterschied zwischen Elementen und Zeiteinheiten ist
* somit, daß Elemente unmittelbar zustandsbezogen sind und punktuellen
* koordinatenbezogenen Charakter haben, während Zeiteinheiten die
* mathematische Dimension einer Länge bzw. Dauer eigen ist.
*
* Die vorhandenen Abstraktionsmöglichkeiten dieses Pakets erlauben
* einerseits eine große Typsicherheit und andererseits die notwendige
* Flexibilität, um beliebige Chronologien neu zu bauen. Konkrete
* Implementierungen starten mit der Basisklasse {@code TimePoint} oder
* der Datumsklasse {@code Calendrical} und registrieren dazu Elemente,
* Zeiteinheiten und die entsprechenden Regeln in der zugehörigen
* Chronology
, die die chronologische Logik enthält.
*
* Werte von Elementen werden meistens als Integerzahlen modelliert,
* können aber bei Bedarf in anderen Typen definiert werden, z.B. als
* Enums. Der Wertbereich eines int-Primitive ist in der Praxis keine reale
* Einschränkung, weil jede Chronologie genügend große
* Elemente (also mit kleiner Präzision) definieren kann. Zum Beispiel
* kennt eine GPS-Zeit auch ein Wochenelement. Die genaue Festlegung des
* Wertbereichs ist der jeweiligen Elementdokumentation zu entnehmen.
*/
package net.time4j.engine;