-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] Kotlin (+ )

, 29 2017 . 20:03 +
. Kotlin. RxJava .

commit 4 , 3 4 . Android , . Enterprise .

. Kotlina , ( ). : Kotlin vs Java, . ( , .. ). . .

? , . , . : , , . . , ? . . , , , ( ). - , . ? , , Google Play 100500 . . , . . , . .

, . . . . , -. , .

. . , , . .

, . , , . . , . , . , , .

2 , - , . 30% . , , . , . . , , .

. . ( ) , 25$/, 30-40 ( ). -, 50 . , . . :

? ( , )
10000 20000 ( , , )
, . . . 3 , 15000 . , . .

Kotlin


. , ( ) . . , . . , . . . . , . , . .

. - 8 , ( ) 4000 ? Kotlin vs Java . - Kotlin Java . / ?

. = + . . write-only ( RegExp. ).

, . boilerplate code . , ( , ) . . Kotlin Java . , .

class Car(val id: String) {
    var speed: Double = 0.0
}

public class Car() {

    public final String id;
    public Double speed;

    public Car(String id) {
        this.id = id;
        this.speed = 0.0;
    }
}

* DTO /
** / ,

Kotlin NPE. id, speed Kotlin null.

var car: Car = Car(null) // compile error
car.speed = null // compile error

, .

fun toRoman(value: Int): String {
   val singles = arrayOf("", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX")
   val tens = arrayOf("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC")
   val hundreds = arrayOf("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM")
   val thousands = arrayOf("", "M", "MM", "MMM")

   val roman = thousands[value / 1000] + hundreds[value % 1000 / 100] + tens[value % 100 / 10] + singles[value % 10]

   return roman
}

public String toRoman(int value) {
   final String[] singles = new String[] { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
   final String[] tens = new String[] { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
   final String[] hundreds = new String[] { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
   final String[] thousands = new String[] { "", "M", "MM", "MMM" };

   final String roman = thousands[value / 1000] + hundreds[value % 1000 / 100] + tens[value % 100 / 10] + singles[value % 10];
   return roman;
}

, ? final . , final Java . .

:

val data:List = ArrayList()
val sum = data.filter { it > 0 }.sum()

List data = new ArrayList<>();
final Integer[] sum = { 0 }; //Variable used in lambda expression should be final or effectively final
data.stream().filter(value -> value > 0).forEach(value -> sum[0] += value);

. Kotlin jvm 6, Java jvm 8 . , 24 API. 5 9,5% . final or effectively final Java.


 
private val buttonGroup = ButtonGroup

private ButtonGroup

Kotline

, Kotlin , . data classes, , string template, lazy properties .. , .

Kotlin + RxJava + Jackson. dto , , . .

interface Property {
   var value: T
   val rx: Observable
}

open class BaseProperty(defaultValue: T) : Property {

   override var value: T = defaultValue
       set(value) {
           field = value
           _rx.onNext(field)
       }

   private val _rx = PublishSubject.create()
   override val rx: Observable = _rx
       get() {
           return field.startWith(value)
       }
}

val rx. Observable . .. json'a . startWith .

class Car {
   private val _speed = BaseProperty(0.0)

   var speed: Double
       get() = _speed.value
       set(value) {
           _speed.value = value
       }
  
   @JsonIgnore
   val rxSpeed: Observable = _speed.rx
}

class Police {
   val cars: List = listOf(Car("1st"), Car("2nd"), Car("3rd"))

   init {
       cars.forEach {
           car -> car.rxSpeed
                   .map { speed -> speed > 60 } //  double   boolean 
                   .distinctUntilChanged()
                   .filter { aboveLimit -> aboveLimit == true }
                   .subscribe { writeTicket(car) }
       }
   }

   private fun writeTicket(car: Car) {
       // do some stuff
   }
}

Car / Jackson', dto , .

Label :

Label("", assets.skin, "progress-bar-time-indicator").apply {
                        setAlignment(Align.center)
                        craft.rx(DURATION).subscribe {
                            setText(TimeFormat.format(it))
                        }
                    })

:

Kotlin'e Java. . , 1.5 2 . Java Kotlin, - . NPE-proof, immutable, lambda & .

Upd:
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/331976/

:  

: [1] []
 

:
: 

: ( )

:

  URL