Kadangi daugiausiai laiko praleidžiu rašydamas Android programas, tad nusprendžiau pasidalinti 4 bibliotekomis, kurios tiesiog daro gyvenimą lengvesnį ir be kurių beveik neįsivaizduoju didesnės programos. Čia neįtraukiau „com.android.support“ bibliotekų, kurių reikia beveik visada.

1. Glide

Nepakeičiama biblioteka kai reikia užkrauti ir atvaizduoti nuotraukas greitai ir sklandžiai. Ši biblioteka pasirūpina viskuo – nuotraukų atsiuntimu, kešavimu, konvertavimu, taip pat pasirūpina resursų atlaisvinimu, kai jie tampa nebereikalingi.
Trumpai tariant, jeigu reikia atvaizduoti nuotraukas, ši biblioteka tiesiog būtina.

GlideApp
  .with(this)
  .load("http://image.url/image")
  .into(imageView);

2. GSON

JSON duomenų apsikeitimo formatas dabar naudojamas praktiškai visur, kur tik reikia persiųsti duomenis, tad natūraliai atsiranda poreikis juos kartais paversti Java objektais, kad darbas būtų paprasenis.
GSON biblioteka skirta konvertuoti Java objektus į JSON atitikmenis, kitaip tiesiog Java į JSON serializatorius ir deserializatorius, kuriam nebūtina, kad klasės turėtų specialias anotacijas, puikiai susitvarko su bendriniais (Generic) Java tipais ir sudėtingomis klasėmis.

public class Car {
    String brand;
    int doors;
}

String json = "{\"brand\":\"Volvo\", \"doors\": 5}";
Gson gson = new Gson();
Car car = gson.fromJson(json, Car.class);

3. Retrofit

Kažkur girdėjau posakį „už kiekvienos geros mobilios programos stovi dar geresnis API“, o Retrofit padeda paversti REST API metodus į Java interface’us, o tai neapsakomai palengvina ne tik programos kūrimą, bet ir kodo skaitomumą.
Daug kas atliekama su anotacijomis, tiesiog nurodant reliatyvų metodo kelią, o pagal grąžinamą tipą metodus galima paversti sinchroniniais arba asinchroniniais.

public interface User {
    @Multipart
    @POST("user/avatar")
    Observable<UserResponse> uploadAvatar(
        @Header("X-AUTH-TOKEN") String token, 
        @Part MultipartBody.Part file
    );

    @FormUrlEncoded
    @POST("user/reset-password")
    Observable<Response<String>> resetPassword(
        @Field("email") String email
    );
}

4. DBFlow

Dirbant su duomenų baze daug laiko užima perteklinio kodo, tokio kaip prisijungimas, duomenų bazės sukūrimas, duomenų analizavimas ir pan. rašymas, tad norint to išvengti labai padeda ORM (Object-relational mapping) įrankiai. DBFlow – tai galingas ir paprastas Android duomenų bazės ORM sukurtas su anotacijų apdorojimu API, tad didžioji dalis kodo yra sugeneruojama, o komunikacija su duomenų baze nėra papildomai apkraunama. Būtent dėl šio kodo generavimo ši biblioteka man taip patinka, o bibliotekos sąsaja (API) labai dažnai suteikia ir patogų būdą atlikti standartines (o kartais ir ne visai) SQL funkcijas.

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
    public static final String NAME = "app_database";
    public static final int VERSION = 1;
}

@Table(database = AppDatabase.class)
public class User extends BaseModel {
    @Column
    @PrimaryKey
    int id;

    @Column
    String name;

    public void setName(String name) {
        this.name = name;
    }
}