<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Engineering Blog &#187; JSR</title>
	<atom:link href="http://www.swe-blog.net/blog/archives/tag/jsr/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swe-blog.net/blog</link>
	<description>Menschen. Prozesse. Technik.</description>
	<lastBuildDate>Fri, 28 Jan 2011 17:40:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ach Leute, die Zeit</title>
		<link>http://www.swe-blog.net/blog/archives/69</link>
		<comments>http://www.swe-blog.net/blog/archives/69#comments</comments>
		<pubDate>Fri, 20 Feb 2009 21:46:00 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Java & Co]]></category>
		<category><![CDATA[javax.time]]></category>
		<category><![CDATA[JSR]]></category>
		<category><![CDATA[JSR 310]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=69</guid>
		<description><![CDATA[Liebe ich Java? Ja, das tue ich. Sicher, Java muß aufpassen nicht den Anschluß an die Entwicklung "moderner" Sprachkonzepte zu verpassen, aber etwas moderater Konservatismus kann nicht schaden. An vorderster Front zu stehen kann auch gefährlich sein und tödlich. Außerdem geziemt es sich nicht für eine "Business-Language" sich in jedes Getümmel zu stürzen.
Es gibt aber [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.swe-blog.net/blog/wp-content/uploads/2009/02/clock.png'><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/02/clock.png" alt="" title="Die Zeit läuft" width="250" height="216" class="alignleft size-full wp-image-73" /></a>Liebe ich Java? Ja, das tue ich. Sicher, Java muß aufpassen nicht den Anschluß an die Entwicklung "moderner" Sprachkonzepte zu verpassen, aber etwas moderater Konservatismus kann nicht schaden. An vorderster Front zu stehen kann auch gefährlich sein und tödlich. Außerdem geziemt es sich nicht für eine "Business-Language" sich in jedes Getümmel zu stürzen.</p>
<p>Es gibt aber auch Dinge in Java oder der API, die haben mich in den letzten acht Jahren immer wieder wahnsinnig werden lassen. Beispielsweise der Umgang mit Zeitangaben. Allein, daß sich <code>Calendar</code> im Package <code>java.util</code> befindet, drückt doch schon eine gewisse Geringschätzung aus...</p>
<p>Wer Businessanwendungen schreibt hat es täglich mit Zeitangaben in seinen Anwendungen zu tun wie: jeden Tag um acht Uhr, sieben Stunden lang oder vom ersten bis zum zehnten jeden Monats. Für all das bietet das JDK nur <code>Date</code> und <code>Calendar</code> als Ausdrucksmittel. Beide Klassen beziehen sich vereinfacht gesagt immer auf einen konkreten Zeitpunkt unter Angabe von Tag und Uhrzeit. Beides stellt also einen festen Punkt auf einer Zeitachse dar. </p>
<p>Damit lassen sich aber die oben genannten Beispiele nicht ausdrücken. "Vom ersten bis zum zehnten" bezieht sich auf zwei Punkte auf der Zeitachse. Sollen Fragen wie "Liegt folgendes Datum im Zeitraum oder davor oder sogar danach?" zwingt uns die API immer mit zwei Datumsangaben zu hantieren. Sollen zwei Datumsangaben mit <code>Calendar</code> noch schnell mit Tages oder Monatsgenauigkeit überprüft werden, läßt sich das auch nicht in einer Zeile bewerkstelligen, da <code>Calendar</code>-Instanzen immer auch Zeitangaben enthalten. </p>
<p>Eine neue API für den Umgang mit Zeit ist also mehr als überfällig und Rettung naht auch schon in Form des <a target="_blank" href="https://jsr-310.dev.java.net/">JSR 310 Date and Time API</a> der unter der Leitung von Stephen Colebourne und Michael Santos entwickelt wird.</p>
<p>Colebourne ist übrigens auch verantwortlich für das <a target="_blank" href="http://joda-time.sourceforge.net/">JodaTima</a>-Projekt, welches heute schon eine alternative API für Zeitberechungen bereitstellt und von <a target="_blank" href="http://joda-time.sourceforge.net/">http://joda-time.sourceforge.net/</a> heruntergeladen werden kann.</p>
<p>Die Grundkonzepte von JodeTime sind die folgenden Datentypen:</p>
<ul>
<li><strong>Instant</strong> für einen Punkt auf der Zeitachse mit Nanosekundenauflösung</li>
<li><strong>Interval</strong> für einen Zeitraum zwischen zwei Punkten auf der Zeitachse</li>
<li><strong>Duration</strong> für eine Zeitdauer in Milisekunden wie zum Beispiel 3 Tage</li>
<li><strong>Period</strong> für Zeitdauerangaben unter der Verwendung von Jahren, Monaten etc. vergleichbar mit <code>xs:duration</code></li>
</ul>
<p>Um diese Datentypen bauen Colebourne und Santos nun auch die API für den JSR 310 auf die eventuell schon in der 7er Version von Java unter <code>javax.time</code> enthalten sein wird. Dazu kommen die notwendigen Klassen zur Verarbeitung von Datumsangaben. Insgesamt hinterläßt die API einen sehr mächtigen Eindruck. Zur Zeit ist sie leider noch sehr instabil, wer aber die <a target="_blank" href="https://jsr-310.dev.java.net/servlets/ProjectMailingListLis">Mailingliste zum JSR 310</a> verfolgt, merkt das aktiv an der Spezifikation und Implementierung gearbeitet wird. Einen guten Überblick über die verfolgten Ziele liefert auch die <a target="_blank" href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6578&yr=2008&track=javase">Präsentation von Colebourne</a> auf der 2008er JavaOne.</p>
<p>Wer bis zu Version 7 nicht warten will, kann jetzt schon bei JodaTime Hilfe finden.</p>
<div class="ressource"><strong>Quellen und Verweise</strong>
<ul>
<li><a target="_blank" href="https://jsr-310.dev.java.net/">Homepage des JSR 310</a></li>
<li><a target="_blank" href="http://joda-time.sourceforge.net/">Das Joda-Time-Projekt</a></li>
<li><a target="_blank" href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6578&yr=2008&track=javase">Präsentation zum JSR 310 auf der JavaOne 2008</a></li>
<li><a target="_blank" href="https://jsr-310.dev.java.net/nonav/doc-2009-01-29/index.html">Snapshot der API per 29. Januar 2009</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/69/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

