Quelltext zum “Scala in der Praxis”-Vortrag

4. November 2011 von Oliver Fischer in Java, Java Code Beispiele

Auf Bitte einiger Teilnehmer unseres gestrigen Vortrags mit Arno Haase zu Scala in der Praxis ist hier der Quelltext.

package a
 
 
sealed abstract class Expr 
case class IntExpr (i: Int) extends Expr
case class VarExpr (name: String) extends Expr
case class BinExpr (left: Expr, right: Expr, op: String) extends Expr
 
object Expr {
  def eval (e: Expr, vars: Map[String, Int]): Int = e match {
    case IntExpr (i) => i
    case VarExpr (v) => vars(v)
    case BinExpr (left, right, "+") => eval (left, vars) + eval (right, vars)
    case BinExpr (left, right, "*") => eval (left, vars) * eval (right, vars)
  }
}
 
class ExprWithSyntax (e: Expr) {
  def + (other: Expr) = BinExpr (e, other, "+")
  def * (other: Expr) = BinExpr (e, other, "*")
 
  def apply (vars: (String, Int)*) = {
    val m = vars.foldLeft (Map[String, Int]()) ((res, cur) => res + cur)
    Expr.eval (e, m)
  }
}
 
object ExpressionSyntax {
  implicit def intAsExpr (i: Int) = IntExpr (i)
  implicit def withSyntax (e: Expr) = new ExprWithSyntax (e)
  implicit def intWithSyntax (i: Int) = new ExprWithSyntax (IntExpr (i))
  def Var (s: String) = VarExpr (s)
}
 
object HelloMain {
  def main (args: Array[String]) {
    import ExpressionSyntax._
    val e = 5 * (3 + Var ("x"))
 
//    println (Expr.eval (e, Map ("x" -> 2)))
    println (e ("x" -> 2))
  }
}
  • Kommentare deaktiviert

JDK in Mac OS X Lion

3. August 2011 von Jan Lolling in Java, Mac Fan Club

Apple hat leider bei Java JDK in Lion ein etwas eigenwilliges Deployment angewendet. Wenn mein sein System von Snow Leopard auf Lion aktualisiert wird man erstmal damit konfrontiert, dass Java verschwunden ist. Man muss es – am besten aus der DeveloperConnection – nach installieren.
Der neue Ablageort ist:
/Library/Java/JavaVirtualMachines/
Darunter liegen aber leider nun keine simplen Verzeichnisse mehr sondern bundles. In diese kann man mit normalen Dateiauswahldialogen (z.B. von Eclipse) nicht eintauchen. Bundels sind aber trotzdem nicht wirklich viel mehr als Verzeichnisse mit besonderen Attributen.
Deshalb macht es Sinn – auch unter dem Aspekt der Kompatibilität symbolische Links zu setzen:
Im Verzeichnis /System/Library/Frameworks/JavaVM.framework legt man einen Link:
sudo ln -s /Library/Java/JavaVirtualMachines/1.6.0_26-b03-383.jdk/Contents/Home/ CurrentJDK
Und nun kann man mit in Eclipse dieses verlinkte Verzeichnis auswählen und man hat sein JDK am Start.

  • Kommentare deaktiviert

JUG Ant Task und SQLRunner haben neues Zuhause

11. April 2011 von Jan Lolling in Java

Die ANT Tasks und der SQLRunner sind nun unter dieser URL zu erreichen:
http://www.jan-lolling.de/
Alle Komponenten stehen nach wie vor unter der LGPL zur freien Verwendung.
Der Code der ANT-Task liegt im download Bereich.
Der Code des SQLRunners ist verfügbar auf Github.

  • Kommentare deaktiviert

Java Aktualisierung für Mac OS X [update]

20. Oktober 2010 von Jan Lolling in Java, Mac Fan Club

Seit heute ist die Version 1.6.0_22 für OSX verfügbar. Soweit nichts spektakuläres aber….

Die API für die Integration von Java Apps in OSX hat sich auch geändert und zeigt deutlich die Vorboten des neuen Betriebssystems Lion (10.7).

Insbesondere die neuen Interfaces (alles SubClasses von com.apple.eawt.AppEventListener) zeigen wo es hin geht:

  • AppHiddenListener,
  • AppReOpenedListener,
  • ScreenSleepListener,
  • UserSessionListener,
  • SystemSleepListener

sind ganz auf die Bedürfnisse der neuen Funktionen von OSX ausgerichtet und zeigen, dass Apple Java nicht links liegen lässt sondern weiter entwickelt.

[Update] Apple überträgt seinen Java-VM Code und die Komponenten zur Kopplung mit dem OS an das OpenJDK-Projekt. Damit wird sicher gestellt dass diese Komponenten auch zeitnah Aktualisierungen erfahren – anders als jetzt wo auf OSX doch erheblich später die Updates kamen.

  • Kommentare deaktiviert

ANT tasks der Java User Group

9. Juni 2010 von Jan Lolling in Java, Java Code Beispiele

Ant ist ein überaus mächtiges Werkzeug für die Automatisierung und Sicherstellung des build-Prozesses in immer gleicher Qualität. Zudem ist es sehr leicht anpassbar und erweiterbar.
Hier ein paar Beispiele aus der Java User Group:

Diese Task sind als Binaries und Source code verfügbar und stehen unter der GPL. Da diese Libs nicht in Produkte integriert werden stellt die GPL auch kein Problem für den kommerziellen Einsatz dieser Task dar.

Diese Task sind bereits im produktiven Einsatz in aktuell 3 Projekten (1 Open Source Projekt und 2 Individual Projekte für kommerzielle Zwecke).

Viel Spass beim Ausprobieren.

Wir freuen uns über Anregungen und Kommetare: jan dot lolling at googlemail dot com.

  • Kommentare deaktiviert

« vorherige Beiträge