Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 4 Raum und Zeit
|  | 4.1 Weltzeit *
|  | 4.2 Wichtige Datum-Klassen im Überblick
|  |  | 4.2.1 Der 1.1.1970
|  |  | 4.2.2 System.currentTimeMillis()
|  |  | 4.2.3 Einfache Zeitumrechnungen durch TimeUnit
|  | 4.3 Sprachen der Länder
|  |  | 4.3.1 Sprachen und Regionen über Locale-Objekte
|  | 4.4 Internationalisierung und Lokalisierung
|  |  | 4.4.1 ResourceBundle-Objekte und Ressource-Dateien
|  |  | 4.4.2 Ressource-Dateien zur Lokalisierung
|  |  | 4.4.3 Die Klasse ResourceBundle
|  |  | 4.4.4 Ladestrategie für ResourceBundle-Objekte
|  | 4.5 Die Klasse Date
|  |  | 4.5.1 Objekte erzeugen und Methoden nutzen
|  |  | 4.5.2 Date-Objekte sind nicht immutable
|  | 4.6 Calendar und GregorianCalendar
|  |  | 4.6.1 Die abstrakte Klasse Calendar
|  |  | 4.6.2 Der gregorianische Kalender
|  |  | 4.6.3 Calendar nach Date und Millisekunden fragen
|  |  | 4.6.4 Ostertage *
|  |  | 4.6.5 Abfragen und Setzen von Datumselementen über Feldbezeichner
|  |  | 4.6.6 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *
|  |  | 4.6.7 Wann beginnt die Woche und wann die erste Woche im Jahr? *
|  | 4.7 Zeitzonen in Java *
|  |  | 4.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren
|  |  | 4.7.2 SimpleTimeZone
|  |  | 4.7.3 Methoden von TimeZone
|  | 4.8 Zeitdauern und der XML-Datentyp Duration *
|  |  | 4.8.1 DatatypeFactory als Fabrik
|  |  | 4.8.2 Die Duration-Klasse und ihre Methoden
|  | 4.9 Formatieren und Parsen von Datumsangaben
|  |  | 4.9.1 Ausgaben mit printf()
|  |  | 4.9.2 Mit DateFormat und SimpleDateFormat formatieren
|  |  | 4.9.3 Parsen von Datumswerten
|  | 4.10 Zum Weiterlesen
## 4.4 Internationalisierung und Lokalisierung Soll ein Programm in jeder Kultur und jedem Sprachraum optimal laufen, ist auf eine ganze Reihe von Dingen zu achten: Texte der Beschriftungen Konventionen in Bezug auf Datum, Dezimalzahlen, Währungen, Telefonnummern Ausrichtungen und Schreibrichtung Grafiken, Farben Töne, Musiken In der Softwareentwicklung gibt es zwei Begriffe, die sich um sprachabhängige Programme drehen: Internationalisierung und Lokalisierung: Internationalisierung: Die Internationalisierung eines Programms bedeutet, dass es so entwickelt und vorbereitet wurde, dass es unter beliebig vielen Sprachen arbeitet. Lokalisierung: Die Lokalisierung ist der Prozess des Anpassens an eine bestimmte neue Sprache. Eine Software, die gleich internationalisiert entworfen wird, kann leicht um andere Sprachen erweitert werden, und Unternehmen können somit schnell in neue Märkte eintreten. Java unterstützt das mit diversen Möglichkeiten: Format-Klassen erleichtern die Formatierung von Datum und Zahlen. ResourceBundle-Objekte ermöglichen unterschiedliche Sprachen durch Übersetzungsdateien. Collator-Klassen aus dem java.text-Paket können sprachabhängig sortieren. Swing kann Text und Komponenten mühelos von rechts nach links laufen lassen. Die Vorbereitung kostet natürlich Zeit und gestalterische Klarheit. Ein Zuviel an Grafiken kann dabei der Lokalisierung im Wege stehen, etwa bei Handgesten, Bildern von Tieren oder Gesichtern. ### 4.4.1 ResourceBundle-Objekte und Ressource-Dateien Sollen Java-Programme sprachunabhängig gestaltet werden, müssen in der ersten Phase der Internationalisierung alle Zeichenketten einer Landessprache durch symbolische Namen ersetzt werden. Die Verbindung zwischen den symbolischen Namen und den landessprachlichen Texten übernimmt ein ResourceBundle-Objekt, hinter dem eine Lokalisierungsdatei steht. Wenn das Programm später eine Zeichenkette nutzen will, greift es auf den symbolischen Namen zurück, den dann das ResourceBundle-Objekt auf die entsprechende Übersetzung überträgt. Die ResourceBundle-Objekte sind spezielle Assoziativspeicher, die alle programmrelevanten Texte und Informationen für ein spezielles Land repräsentieren. Ein wesentliches Merkmal von Java besteht in der Fähigkeit dieser Datenspeicher, sich die passenden Lokalisierungsdateien selbst herauszusuchen. ### 4.4.2 Ressource-Dateien zur Lokalisierung Die Übersetzungen können aus Dateien oder einfachen Listen stammen; wir nehmen im Folgenden Dateien an. Da wir die Sprachen Englisch und Deutsch unterstützen wollen, legen wir im (frei wählbaren) Verzeichnis resources zwei Dateien an, eine für die englische und eine für deutsche Version: Listing 4.2: resources/HelloWorld_en.properties
    # HelloWorld_en.properties
    Hello=Hello World.
    Bye=Bye.
Listing 4.3: resources/HelloWorld_de.properties
    # HelloWorld_de.properties
    Hello=Hallo Welt.
    Bye=Tschüss.
Die Datei enthält Schlüssel-Werte-Paare sowie Kommentare, die mit einer Raute beginnen. Mit einem Identifizierer – wie »Hello« – sind die landes-/sprachabhängigen Zeichenketten als Werte verbunden. Die Dateinamen für die Ressourcen-Dateien haben dabei einen speziellen Aufbau. Sie setzen sich aus dem sogenannten Basisnamen (hier HelloWorld), einem Unterstrich (»_«), einer Landeskennung und dem Datei-Suffix properties zusammen. Damit ergeben sich für die Sprachen Englisch und Deutsch die Dateinamen HelloWorld_en.properties und HelloWorld_de. properties. Eclipse kann automatisch die Zeichenketten eines Programms in eine Datei auslagern. Dazu ist im Menü Source der Eintrag Externalize Strings... aufzurufen. ### 4.4.3 Die Klasse ResourceBundle Um auf die Übersetzungsdateien zurückgreifen zu können, benötigen wir ein Objekt der Klasse ResourceBundle. Die statische Fabrikmethode ResourceBundle.getBundle(name) liefert den Assoziativspeicher, wobei name der Basisname wie »HelloWorld« ist. Über den Schlüssel sucht die Methode getString() die landesspezifische Meldung heraus. Abbildung 4.2: UML-Diagramm für ResourceBundle Listing 4.4: com/tutego/insel/bundle/InternationalHelloWorld.java
    package com.tutego.insel.bundle;

    import java.util.*;

    //$java -Duser.language=en com.tutego.insel.bundle.InternationalHelloWorld
    public class InternationalHelloWorld
    {
      public static void main( String[] args )
      {
        String baseName = "resources.HelloWorld";

        try
        {
          ResourceBundle bundle = ResourceBundle.getBundle( baseName );
          System.out.println( bundle.getString("Hello") );
        }
        catch ( MissingResourceException e ) {
          System.err.println( e );
        }
      }
    }
### 4.4.4 Ladestrategie für ResourceBundle-Objekte Die Methode getBundle() sucht automatisch anhand der eingestellten Landessprache die passende Datei aus dem Klassenpfad (aus diesem Grund heißt unser Basisname »resources.HelloWorld« und nicht nur einfach »HelloWorld«). Die Dateinamen für die jeweiligen ResourceBundle-Objekte können sehr variabel zusammengesetzt werden, wobei getBundle() die nachfolgenden Bildungsgesetze verwendet und bei der Dateisuche mit der speziellsten Beschreibung beginnt: bundleName_localeLanguage_localeCountry_localeVariant bundleName_localeLanguage_localeCountry bundleName_localeLanguage bundleName_defaultLanguage_defaultCountry_defaultVariant bundleName_defaultLanguage_defaultCountry bundleName_defaultLanguage bundleName Sind mehrere Ressourcen-Dateien im Klassenpfad, so integriert sie getBundle(). Eine Datei wie HelloWorld_de.properties erweitert (und überschreibt unter Umständen) die Inhalte von HelloWorld.properties. Eine localeCountry ist zum Beispiel »CH« (das ist keine Variante), was zu einem Dateinamen HelloWorld_de_CH.properties führt. Listing 4.5: resources/HelloWorld_de_CH.properties
    Hello=Grüezi.
Die Anfrage bundle.getString("Hello") liefert »Grüezi«, und bundle.getString("Bye") retourniert »Tschüss« aus der übergeordneten Datei. Die Datei HelloWorld_de_CH.properties überschreibt die hochdeutschen Wörter aus HelloWorld_de.properties mit Wörtern auf Schwyzerdütsch, was wiederum Wörter aus HelloWorld.properties überschreiben würde. Um das Programm zu testen, ändert folgende Zeile vor getBundle() die Sprache:
    Locale.setDefault( new Locale("de", "CH") );
Gibt es dann eine Datei wie HelloWorld_de_CH.properties, aber HelloWorld_de.properties fehlt und die eingestellte Sprache ist nur Deutsch und nicht ausschließlich Schweizerdeutsch, beachtet getBundle() die Datei HelloWorld_de_CH.properties nicht, sondern nur eventuell vorgelagerte Dateien wie HelloWorld.properties.
    abstract class java.util.ResourceBundle
static ResourceBundle getBundle(String baseName) Liefert das ResourceBundle für einen Basisnamen. Eine MissingResourceException folgt, wenn kein Resource-Bundle mit diesem Basisnamen gefunden werden konnte. String getString(String key) Gibt den mit key assoziierten Wert von diesem Resource-Bundle oder von den Vätern zurück. Die einfache statische Fabrikmethode getBundle() bezieht zum Ansprechen der Dateien die Standard-Sprache aus Locale.getDefault(). ### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de