Senin, 08 Juni 2015

Matlab Camera dan Capture For lp2maray


ABSENSI MATLAB AUTO CAPTURE

% --- Executes on button press in btnZOOM.
function btnZOOM_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I = get(proyek.axes1,'Userdata');
%J = imresize(I, 2, 'nearest');
J = imresize(I, [512 NaN]);
set(proyek.proyekPD2,'CurrentAxes',proyek.axes2);
imshow(J);
figure, imshow(I), figure, imshow(J)




% --- Executes on button press in btnCrop.
function btnCrop_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I = get(proyek.axes1,'Userdata');
set(proyek.proyekPD2,'CurrentAxes',proyek.axes2);
imshow(I);
im=I;
f = imfreehand();
mask = f.createMask();
mask = repmat(mask,[1 1 3]);
im(~mask) = 0;
    set(imshow(im)); 
    set(proyek.axes2,'Userdata',im);
    [ps]=['Crop gambar selesai'];
    h = msgbox(ps, 'CROP','Help');% ICON:Warn Help Error

% --- Executes on button press in btnBrowse.
function btnBrowse_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
[proyek.namafile,proyek.direktori]=uigetfile({'*.bmp;*.jpg','file citra(*.bmp,*.jpg)';'*.bmp','file bitmap(*.bmp)';'*.jpg','file jpg(*.jpg)';'*.*','semua file(*.*)'},'buka file citra host/asli');
I=imread(fullfile(proyek.direktori,proyek.namafile));
  
if ~isequal(proyek.namafile, 0)
    set(proyek.proyekPD2,'CurrentAxes',proyek.axes1);
    set(imshow(I)); 
    set(proyek.axes1,'Userdata',I);
    [ps]=['Load gambar ' proyek.namafile ' berhasil'];
    h = msgbox(ps, 'Load','Help');% ICON:Warn Help Error
else
    return;
end


% --- Executes on button press in btnClearBG.
function btnClearBG_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I = get(proyek.axes1,'Userdata');
%%%%%%%hilangkan bground
H = fspecial('gaussian'); % Create the filter kernel.
I = imfilter(I,H); % Blur the image.
Mask = im2bw(I, 0.9); % Now we are generating the binary mask.
I([Mask, Mask, Mask]) = 0; % Now we have the image.
%%%%%%%%%%%%%%%%%%%%%%%%%
set(proyek.proyekPD2,'CurrentAxes',proyek.axes1);
imshow(I);
set(proyek.axes1,'Userdata',I);
msgbox('u CROP : Silakan drag di area yang diinginkan..','OK','Crop',I,[]);


% --- Executes on button press in btnCROPRect.
function btnCROPRect_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I = get(proyek.axes1,'Userdata');
set(proyek.proyekPD2,'CurrentAxes',proyek.axes2);
imshow(I);
[im,rect] = imcrop(I);
    set(imshow(im)); 
    set(proyek.axes2,'Userdata',im);
    [ps]=['Crop gambar By Rectangle selesai'];
    h = msgbox(ps, 'CROP RECT','Help');% ICON:Warn Help Error


% --- Executes on button press in myBtnReset.
function myBtnReset_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
mau=questdlg(['Reset ' get(proyek.proyekPD2,'Name')''],['Anda ingin Reset  Aplikasi ini?'],'Ya','Tidak','Ya');
if strcmp(mau,'Tidak')
return;
else
    arrayfun(@cla,findall(0,'type','axes'))
    hm = msgbox('Reset','Reset Sukses','help');
end


% --- Executes on button press in btnCamera.
function btnCamera_Callback(hObject, eventdata, handles)
%   InstalledAdaptors: {'coreco'  'winvideo'}
%         MATLABVersion: '7.10 (R2010a)'
%           ToolboxName: 'Image Acquisition Toolbox'
%        ToolboxVersion: '3.5 (R2010a)'
%obj = videoinput('matrox', 1);
proyek=guidata(gcbo);
%vid = videoinput('winvideo',2, 'YUY2_176x144');
vid=videoinput('winvideo', 1);
vid.FramesPerTrigger = 1;
vid.ReturnedColorspace = 'rgb';
triggerconfig(vid, 'manual');
vidRes = get(vid, 'VideoResolution');
imWidth = vidRes(1);
imHeight = vidRes(2);
nBands = get(vid, 'NumberOfBands');
hImage = image(zeros(imHeight, imWidth, nBands), 'parent', proyek.axes1);
preview(vid, hImage);
set(proyek.axes1,'Userdata',vid);
start(vid);
pause(1);
trigger(vid);
stoppreview(vid);
I = getdata(vid);
FDetect = vision.CascadeObjectDetector;

BB = step(FDetect,I);
imshow(I);
hold on
for i = 1:size(BB,1)
    BB(i,:)
    rectangle('Position',BB(i,:),'LineWidth',5,'LineStyle','-','EdgeColor','r');
end
% 107    77   130   130
I = imcrop(I,BB);
I=imresize(I,[256 256]);
set(handles.proyekPD2,'CurrentAxes',handles.axes1);
hold off;
imshow(I);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%OK
TrainDatabasePath = 'TrainDatabase\';%uigetdir(strcat(matlabroot,'\work'), 'Select training database path' )
TestDatabasePath ='TestDatabase\';% uigetdir(strcat(matlabroot,'\work'), 'Select test database path')

% prompt = {'Enter test image name (a number between 1 to 10):'};
% dlg_title = 'Input of FLD-Based Face Recognition System';
% num_lines= 1;
% def = {'1'};
%
% TestImage  = inputdlg(prompt,dlg_title,num_lines,def);
% TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');
TestImage=I;
im = I;%imread(TestImage);
%200x180x3            108000  uint8
%53         90   131   131
%I          132x132x3            52272  uint8  
 
T = CreateDatabase(TrainDatabasePath);
[m V_PCA V_Fisher ProjectedImages_Fisher] = FisherfaceCore(T);
OutputName = Recognition(TestImage, m, V_PCA, V_Fisher, ProjectedImages_Fisher);

SelectedImage = strcat(TrainDatabasePath,'\',OutputName);
SelectedImage = imread(SelectedImage);

imshow(SelectedImage)
str = strcat('Matched image is :  ',OutputName);
set(handles.edNis,'String',OutputName);
disp(str)







% --- Executes on button press in btnCapture.
function btnCapture_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
vid= get(proyek.axes1,'Userdata');
disp('============');
whos vid
start(vid);
pause(3);
trigger(vid);
stoppreview(vid);
I = getdata(vid);
imwrite(I, 'captured.png');
warndlg('Capture berhasil....!');
set(imshow(I));       
set(proyek.axes1,'Userdata',I);


% --- Executes on button press in btnSave.
function btnSave_Callback(hObject, eventdata, handles)
% proyek=guidata(gcbo);
% counter  = 1;
% img=  get(proyek.axes1,'Userdata');
% baseDir  = '';%'C:\Users\Sony Vaio\Documents\Task\images\';
% baseName = 'image_';
% newName  = [baseDir baseName num2str(counter) '.jpg'];
% while exist(newName,'file')
%     counter = counter + 1;
%     newName = [baseDir baseName num2str(counter) '.jpg'];
% end   
% imwrite(img, newName);
[handles.namafile,handles.direktori]=uiputfile({'*.bmp;*.jpg','file citra(*.bmp,*.jpg)';'*.bmp','file bitmap(*.bmp)';'*.jpg','file jpg(*.jpg)';'*.*','semua file(*.*)'},'simpan file citra');
al=fullfile(handles.direktori,handles.namafile)

I=get(handles.axes1,'Userdata');
gbr=imresize(I,[256 256]);
imwrite(gbr,al);
msgbox(['The new image @ ' handles.direktori '\'  handles.namafile ' has Succesfully to Save']);


% --- Executes on button press in btnClose.
function btnClose_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
mau=questdlg(['Keluar ' get(proyek.aplikasi,'Name')''],['Anda ingin Keluar dari Aplikasi ini?'],'Ya','Tidak','Ya');
if strcmp(mau,'Tidak')
return;
end
delete(proyek.aplikasi);


% --- Executes on button press in BTNaUTO.
function BTNaUTO_Callback(hObject, eventdata, handles)
FDetect = vision.CascadeObjectDetector;
I = get(handles.axes1,'Userdata');
BB = step(FDetect,I);
imshow(I);
hold on
for i = 1:size(BB,1)
    rectangle('Position',BB(i,:),'LineWidth',5,'LineStyle','-','EdgeColor','r');
end
hold off;

function btnLoad_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
[handles.namafile,handles.direktori]=uigetfile({'*.bmp;*.jpg','file citra(*.bmp,*.jpg)';'*.bmp','file bitmap(*.bmp)';'*.jpg','file jpg(*.jpg)';'*.*','semua file(*.*)'},'buka file citra host/asli');
I=imread(fullfile(handles.direktori,handles.namafile));
FDetect = vision.CascadeObjectDetector;

BB = step(FDetect,I);
imshow(I);
hold on
for i = 1:size(BB,1)
    BB(i,:)
    rectangle('Position',BB(i,:),'LineWidth',5,'LineStyle','-','EdgeColor','r');
end
% 107    77   130   130
I = imcrop(I,BB);
set(handles.proyekPD2,'CurrentAxes',handles.axes1);
hold off;
imshow(I);
set(handles.axes1,'Userdata',I);




uhh pusing.....lbh mendalam lg......lp2maray.com ya u pembahasannya

Vehicle Licence Plate Identification BY OCR Matlab

Refrensi:
https://www.youtube.com/watch?v=4v8hJbD_B2s
http://datab.us/qkfrpNRZMIs#Automated%20License-Plate%20Recognition%20On%20Egyptian%20Licenses%20Using%20Matlab

  
clc;
close all;
clear all;
%.................................
f=imread('6.jpg');
f=imresize(f,[400 NaN]);                   %%image loading unit
imshow(f);
g=rgb2gray(f);
g=medfilt2(g,[3 3]);
%**********************************
conc=strel('disk',1);
gi=imdilate(g,conc);
ge=imerode(g,conc);            %%%% morphological image processing
gdiff=imsubtract(gi,ge);
gdiff=mat2gray(gdiff);
gdiff=conv2(gdiff,[1 1;1 1]);
gdiff=imadjust(gdiff,[0.5 0.7],[0 1],.1);
B=logical(gdiff);
[a1 b1]=size(B);
figure(2)
imshow(B)
er=imerode(B,strel('line',100,0));
figure(3)
imshow(er)
out1=imsubtract(B,er);
F=imfill(out1,'holes');      %%%filling the object
H=bwmorph(F,'thin',1);
H=imerode(H,strel('line',3,90));
figure(4)
imshow(H)
%%
final=bwareaopen(H,floor((a1/15)*(b1/15))); 
final(1:floor(.9*a1),1:2)=1;
final(a1:-1:(a1-20),b1:-1:(b1-2))=1;
yyy=template(2);
figure(5)
imshow(final)
Iprops=regionprops(final,'BoundingBox','Image');
hold on
for n=1:size(Iprops,1)
    rectangle('Position',Iprops(n).BoundingBox,'EdgeColor','g','LineWidth',2);
end
hold off
NR=cat(1,Iprops.BoundingBox);   %%Data storage section
[r ttb]=connn(NR);

if ~isempty(r)
   
   
    xlow=floor(min(reshape(ttb(:,1),1,[])));
    xhigh=ceil(max(reshape(ttb(:,1),1,[])));
    xadd=ceil(ttb(size(ttb,1),3));
    ylow=floor(min(reshape(ttb(:,2),1,[])));    %%%%%area selection
    yadd=ceil(max(reshape(ttb(:,4),1,[])));
    final1=H(ylow:(ylow+yadd+(floor(max(reshape(ttb(:,2),1,[])))-ylow)),xlow:(xhigh+xadd));
    [a2 b2]=size(final1);
    final1=bwareaopen(final1,floor((a2/20)*(b2/20)));
    figure(6)
    imshow(final1)
   
  
    Iprops1=regionprops(final1,'BoundingBox','Image');
    NR3=cat(1,Iprops1.BoundingBox);
    I1={Iprops1.Image};
   
    %%
    carnum=[];
    if (size(NR3,1)>size(ttb,1))
        [r2 to]=connn2(NR3);
       
        for i=1:size(Iprops1,1)
           
            ff=find(i==r2);
            if ~isempty(ff)
                N1=I1{1,i};
                letter=readLetter(N1,2);
            else
                N1=I1{1,i};
                letter=readLetter(N1,1);
            end
            if ~isempty(letter)
                carnum=[carnum letter];
            end
        end
    else
        for i=1:size(Iprops1,1)
            N1=I1{1,i};
            letter=readLetter(N1,1);
            carnum=[carnum letter];
        end
    end
    %%
   
    fid1 = fopen('carnum.txt', 'wt');
    fprintf(fid1,'%s',carnum);
    fclose(fid1);
    winopen('carnum.txt')
  


else
    fprintf('license plate recognition failure\n');
    fprintf('Characters are not clear \n');
end

=================================================
function letter=readLetter(snap, i1)


load NewTemplates
snap=imresize(snap,[42 24]);
comp=[ ];
if (i1==1)
    for n=1:(length(NewTemplates)-1)
        sem=corr2(NewTemplates{1,n},snap);
        comp=[comp sem];
    end
    vd=find(comp==max(comp));
 
    %*-*-*-*-*-*-*-*-*-*-*-*-*-
   
    if vd==1 || vd==2
        letter='A';
    elseif vd==3 || vd==4
        letter='B';
    elseif vd==5
        letter='C';
    elseif vd==6 || vd==7
        letter='D';
    elseif vd==8
        letter='E';
    elseif vd==9
        letter='F';
    elseif vd==10
        letter='G';
    elseif vd==11
        letter='H';
    elseif vd==12
        letter='I';
    elseif vd==13
        letter='J';
    elseif vd==14
        letter='K';
    elseif vd==15
        letter='L';
    elseif vd==16
        letter='M';
    elseif vd==17
        letter='N';
    elseif vd==18 || vd==19
        letter='O';
    elseif vd==20 || vd==21
        letter='P';
    elseif vd==22 || vd==23
        letter='Q';
    elseif vd==24 || vd==25
        letter='R';
    elseif vd==26
        letter='S';
    elseif vd==27
        letter='T';
    elseif vd==28
        letter='U';
    elseif vd==29
        letter='V';
    elseif vd==30
        letter='W';
    elseif vd==31
        letter='X';
    elseif vd==32
        letter='Y';
    elseif vd==33
        letter='Z';
    %*-*-*-*-*
   
    elseif vd==34
        letter='1';
    elseif vd==35
        letter='2';
    elseif vd==36
        letter='3';
    elseif vd==37 || vd==38
        letter='4';
    elseif vd==39
        letter='5';
    elseif vd==40 || vd==41 || vd==42
        letter='6';
    elseif vd==43
        letter='7';
    elseif vd==44 || vd==45
        letter='8';
    elseif vd==46 || vd==47 || vd==48
        letter='9';
    elseif vd==49 || vd==50
        letter='0';
    elseif vd==51
        letter='-';
    end
end
if (i1==2)
    for n=51:length(NewTemplates)
        sem=corr2(NewTemplates{1,n},snap);
        comp=[comp sem];
        max(comp);
    end
    if (max(comp)>.3)
        letter='-';
    else
        letter=[];
    end
end
end



Gradle Instalasi For Desktop

Menginstall Gradle

Berikut ini langkah-langkah setup gradle di komputer kita:
  1. Download gradle di websitenya lalu ekstrak di direktori mana saja.
  2. Buat environment variable bernama GRADLE_HOME dan isi valuenya dengan path menuju direktori gradle yang diekstrak tadi.
  3. Logout dari sistem, login lagi. Selesai. :)

Java Project Layout

Project layout sebetulnya terserah kita mau bagaimana. Tapi java punya konvensi terhadap project layout ini. Project layout yang saya gunakan biasanya ada 3 yaitu untuk project java, java web dan java enterprise. Untuk mendukung contoh penggunaan Gradle pada pembahasan artikel ini, saya akan memilih menggunakan project layout java. Layoutnya seperti ini:
1
2
3
4
5
6
7
8
+-projectRootDir
  +-src
    +-main
    | +-java
    | +-resources
    +-test
      +-java
      +-resources
Layout di atas adalah layout untuk project tunggal. Nanti kita akan buat menjadi layout multi project menggunakan Gradle. Multi project pengertiannya adalah ada satu atau banyak project di dalam satu project. Kenapa harus multi project? Karena menurut saya project akan lebih jelas peranannya karena lebih modular dan lebih gampang memaintainnya.

Gradle Project dan Task

Untuk membuat project Gradle, cukup buat direktori biasa. Misalkan direktorinya kita beri nama coba_gradle. Direktori ini nantinya akan berlaku sebagai root project. Untuk membuatnya menjadi root project Gradle, di dalam direktori coba_gradle kita harus membuat file bernama build.gradle. Sudah, cukup itu saja. :)
Gradle task adalah task yang kita coding sendiri menggunakan bahasa pemrograman Groovy. Karena kita akan membuat project java kita akan menggunakan plugin java pada Gradle. Apa peran atau fungsi plugin? Plugin pada Gradle adalah untuk meringankan kita dalam membuat task. Jika kita menggunakan plugin maka kita tidak perlu membuat task lagi.
Selanjutnya kita akan bahas isi dari file build.gradle ini yang merupakan konfigurasi dari root project yang kita buat. Saya beri contoh isi filenya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Dengan apply java plugin, kita dibuatkan task-task untuk membuild program java kita
// Untuk mengeceknya, kita bisa jalankan perintah: gradle tasks
// nanti akan tampil task-task apa saja yang available. Bandingkan daftar tasknya ketika kita belum apply plugin java
apply plugin: 'java'

// Ini adalah project properties. Saya menggunakannya untuk listing masing-masing versi dari dependency yang digunakan
// Project properties ini digunakan ketika mendeklarasikan dependency
project.ext {
    JUNIT_VERSION = '4.11'
    SPRING_CORE_VERSION = '4.0.5.RELEASE'
}

// Konfigurasi untuk semua project
allprojects {
    // Konfigurasi repository maven
    // Kita menggunakan 2 repository. Local dan maven central
    repositories {
        // Konfigurasi repository lokal maven. Kita arahkan ke komputer lokal di direktori
        // /home/budi/.m2/repository
        // Bisa juga diarahkan ke local repository server seperti nexus atau artifactory
        maven {
            url "file://home/budi/.m2/repository"
        }

        // Special Gradle notation yang berguna untuk memberitahu Gradle bahwa kita menggunakan repository maven central
        mavenCentral()
    }
}

// Konfigurasi untuk tiap subproject
// Nantinya ketika kita membuat subproject, konfigurasi ini akan diwariskan ke subproject tersebut
subprojects {
    apply plugin: 'java'

    // Supaya kita tidak usah repot membuat maven task.
    apply plugin: 'maven'

    // Konfigurasi maven plugin supaya mengupload artifact ke path yang kita inginkan
    uploadArchives {
        repositories {
            mavenDeployer {
                // Path kita set ke direktori komputer lokal /home/budi/.m2/repository
                repository(url: "file://home/budi/.m2/repository/")
            }
        }
    }

    // Deklarasi dependency untuk setiap subproject
    dependencies {
        // Syntaxnya adalah <scope> "<groupId>:<artifactId>:<version>"
        // Scope ada 4, yaitu compile, runtime, testCompile, testRuntime
        // compile: dependency diperlukan saat compile ataupun development
        // runtime: dependency diperlukan saat runtime
        // testCompile: dependency diperlukan saat ngetes-ngetes program
        // testRuntime: dependency diperlukan saat program yang untuk ngetes-ngetes berjalan

        // Sebagai contoh, kita menggunakan 2 library. JUnit dan spring-context
        // Bisa kita lihat pada deklarasi version menggunakan variable dari project properties
        testCompile "junit:junit:${project.JUNIT_VERSION}"
        compile "org.springframework:spring-context:${project.SPRING_CORE_VERSION}"
    }
}

Membuat Subproject

Root project sudah dibuat. Saatnya kita membuat subproject. Untuk membuatnya sangat gampang. Cukup membuat direktori baru di dalam direktori root project. Misalkan kita buat namanya coba_gradle_subproject. Di dalam direktori ini, kita buat layout project java yang sudah dibahas sebelumnya. Jangan lupa kita juga wajib membuat file build.gradle di dalam direktori coba_gradle_subproject ini. Sebagai contoh, isinya hanya seperti ini:
1
version = '1.0.0.SNAPSHOT'
Walaupun isinya hanya seperti itu, namun karena root project sudah mendefinisikan konfigurasi pada block subprojects, maka otomatis subproject ini mewarisi apa yang sudah dideklarasikan di sana, dari plugin dan dependencynya. Variabel version ini perlu kita deklarasikan supaya nanti ketika subproject ini kita compile menjadi bentuk jar misalnya, filenamenya akan ditambahkan version dari project ini. Jadi misalkan versionnya kita set 1.0.0.SNAPSHOT, maka file yang tercipta nantinya akan bernama coba_gradle_subproject-1.0.0.SNAPSHOT.jar.
Pada file ini, kita juga bisa mendeklarasikan lagi konfigurasi yang sama dengan yang sudah ada di root project atau yang lain. Nantinya Gradle pertama kali akan membaca build.gradle dari direktori subproject, lalu membaca lagi build.gradle dari direktori root project dan mengakumulasikannya.
Nah, subproject sudah dibuat. Bagaimana caranya supaya root project mengenali subproject ini? Mari kita kembali lagi ke direktori coba_gradle. Dalam direktori tersebut, buatlah file bernama settings.gradle dan deklarasikan subprojectnya di dalam file tersebut seperti berikut:
1
2
3
4
5
6
include 'coba_gradle_subproject'

// tambahkan subproject lain jika ada
// include 'subproject2'
// include 'subproject3'
// dst...
Gambaran akhir dari struktur direktorinya adalah sebagai berikut:
1
2
3
4
5
6
7
8
9
10
11
+-coba_gradle
  +-coba_gradle_subproject
  |  +-src
  |  |  +-main
  |  |  | +-java
  |  |  | +-resources
  |  |  +-test
  |  |    +-java
  |  +-build.gradle
  +-build.gradle
  +-settings.gradle
Setup project sudah selesai :). Kekurangan dari Gradle ini adalah belum mempunyai archetype generator seperti maven. Jadi setiap kali kita membuat subproject, kita membuat layout direktori secara manual. Ke depannya Gradle diharapkan mempunyai fitur seperti maven archetype.

Gradle Alternatif Next Build Tools Java

Gradle merupakan sebuah build tool dengan Groovy sebagai scripting language-nya. Bagi saya, menggunakan Gradle itu artinya kita menggunakan segala kebaikan dari Ant, Maven dan Groovy, yaitu fleksibilitas di sisi konfigurasi, layout dan logika dari build system dan convention over configuration. Walaupun dibangun dari tools yang identik dengan Java, tapi Gradle dapat digunakan untuk hal-hal lain. Saya akan coba sedikit share bagaimana saya menggunakan Gradle untuk pengembangan aplikasi Java.
FYI, Hibernate juga baru saja menggantikan build toolnya dari Maven ke Gradle.

Instalasi

Pastikan Groovy sudah terinstalasi dengan benar dengan mengikuti instruksi di sini.
Instalasinya cukup mudah, setelah kita download, daftarkan direktori (direktori_gradle)/bin ke environmental variable PATH.
Jika masih kesulitan, silahkan lihat instruksi instalasi lebih lengkapnya di sini.

“Hello Gradle”

Kita akan coba build satu program simple yang hanya menampilkan teks “Hello Gradle”. Buka IDE favorit anda sekarang, buat satu project baru dengan nama HelloGradle.
Secara convention, Gradle akan mengasumsikan bahwa struktur direktori project kita mengikuti struktur direktori standar yang digunakan oleh Maven.
src
   /main
        /java
        /resources
   /test
        /java
        /resources
Direktori ‘main’ dan ‘test’ di atas adalah source set standar untuk pengembanga aplikasi Java.
Di dalam direktori src/main/java dan di dalam package gradle.example, kita buat class seperti di bawah ini.
package gradle.example;
 
public class HelloGradle {
    public static void main(String[] args){
        System.out.print("Hello Gradle");
    }
}
Kode di atas adalah kode yang pastinya sangat membosankan bagi anda, tapi yang saya ingin tunjukkan adalah bagaimana kita build program di atas menggunakan Gradle.
Buat file build.gradle di root directory project anda yang isinya sebagai berikut.
apply plugin: 'java'
Baris di atas memberitahukan Gradle bahwa kita ingin menggunakan plugin dengan nama ‘java’. Gradle terdiri atas banyak plugin yang dapat kita gunakan untuk berbagai kebutuhan. Namun untuk pengembangan aplikasi Java, paling tidak kita menggunakan plugin java. Dengan menggunakan plugin java maka kita dapat mengeksekusi task-task yang berkaitan dengan Java, misalnya task untuk compile source code.
Untuk mengcompile program di atas, kita cukup eksekusi perintah berikut di root directory project kita:
gradle compileJava
 
 
 
 Refrensi:
http://gradle.org/java_plugin.html 
http://blog.codequ.com/2011/06/16/membangun-aplikasi-java-dengan-gradle.html 
http://software.endy.muhardin.com/java/project-setup-dengan-gradle/ 

Gradle: The New Android Build System

Ikuti Ceramahnya :
https://gradle.org/gradle-the-new-android-build-system/

Java Build Tools

Build tools adalah sebuah tools atau alat untuk mengcompile suatu project berisi source code yang kita buat.

Ssstttt......Build tools banyak macamnya dan sudah ada sejak lama.

Kenapa Kita Butuh Build Tools

Setelah kita selesai ngoding, tentunya kita compile aplikasi kita.

Nah proses pengcompilean biasanya mencakup banyak hal, misalnya yang paling mendasar adalah mengubah source code menjadi binary.
Proses ini kadang menjadi rumit ketika code yang kita buat menggunakan satu atau lebih library eksternal. Project kita menjadi dependen(bergantung) kepada library yang kita gunakan. Ternyata library yang kita gunakan pun dependen terhadap library lainnya lagi. Semuanya ini kalau kita selesaikan satu per satu secara manual bisa membuat pusing kepala.

Masalah lainnya lagi adalah ketika packaging. Packaging project adalah aktivitas kita sebelum mendistribusikan project kita. Dalam kegiatan packaging ini, kita seleksi file-file mana saja yang harus diikutsertakan, bagaimana layoutnya, apa tipe packagenya dan sebagainya. Nah build tools ini mempunyai kemampuan untuk membantu kita dalam mengerjakan hal ini. Cukup sekali melakukan konfigurasi saja, selanjutnya biar build tools yang melakukannya. Jadi intinya adalah build tools ini membantu mengotomatisasi pekerjaan kita dalam hal distribusi dan build project. Pertanyaannya, apa build tools yang bagus untuk project Java? Menurut saya ada 3 yaitu Apache Ant(Manually), Maven(Automatic) dan Gradle(Automatic).

Intslasi Apache ANT

What is ?
Adalah software berbasis Java yang digunakan untuk keperluan build tool. 
 
Yaitu untuk  mengatur struktur file dari aplikasi java untuk Melakukan compile coding dan menjadikan menjadi sebuah packet (jar) ,

Like Netbeans, di java untuk membangun sebuah aplikasi untuk melakukan compile coding class class yang tersusun biasanya terpisah setelah dicompile, memang netbeans juga bisa melakukan compile tersebut dan menjadikan sebuah paket, tapi untuk bawaan dari strukur file netbeans saja,

The Result: Apache ant jika anda menyusun sebuh projek besar yang dimana banyak paket dari luar yang digabungkan menjadi satu, nah untuk menjadi satukan semua class untuk dijadikan sebuah paket kita memerlukan build tools Apache ant ini adapun juga build tools yang lain seperti Maven , Gradle  dan lain sebagainya
CARA INSTALL APACHE ANT
Pertama untuk melakukan penginstalan apache ant anda harus menginstall JDK, anda dapat mendownload JDK di https://www.java.net/download/  lakukan Instalasi JDK Seperti biasa, dan untuk Apache Ant anda dapat mendownload di http://ant.apache.org/ pilih versi apache ant dan Jenis Operasi sistem yang anda gunakan untuk melakukan instalasi. Selesai download extrack file apache tersebut letakan di terserah drive mana, contohnya di drive C:\apache-ant-1.9.4-bin  Jadi tampilannya seperti ini : 

Setelah di extrack dan copy foldernya, sekarang buka my computer, klik kanan properties, pilih Advanced system settings, pilih menu Advanced, klik Environment Variables maka tampilannya seperti ini : 

Buat variabel baru di system variables dengan klik tombol New untuk apache ant.
Variable name = ANT_HOME
Variable value =  C:\apache-ant-1.9.4-bin
Buat lagi variabel baru untuk JDK anda saya menggunakan JDK 1.7.0_60.
Variable name = JAVA_HOME
Variable value =  C:\Program Files\Java\jdk1.7.0_60
Sekarang Buat variabel baru lagi untuk menghubungkan Apache Ant Dan JDK.
Variable name = PATH
Variable value =  %JAVA_HOME%;%ANT_HOME%\bin;
pada Gambar di atas...saya menyatukan antara path java dengan path apache ant...Gpp....ya...

Selesai membuat 3 variabel tersebut klik ok di  Environment Variables.
Nah, sekarang untuk melakukan pengecekan terhadap Apache Ant yg telah anda install, buka Command Prompt, ketik  ant -version maka hasilnya seperti ini.

 
Jika tampil seperti seperti gambar seperti command prompt di atas berarti apache ant anda telah terinstall dan siap digunakan, jika ada kesalahan saat menampilkan versi apache ant di command prompt berarti lokasi path ant anda salah, JDK belum terinstall atau konfigurasi variabel Envorinment anda yang keliru cek kembali pengaturannya. 
 
Jika ada kesalahan misalnya :
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre7\lib\tools.jar
SIlakan direstart dulu pc nya atau jika masih muncul pesan yang sama,,,,silakan...ikuti tutorialnya di 

http://vietpad.sourceforge.net/javaonwindows.html
============================================//ada ketidaksesuaian JDK nya...
CONTOH PENGGUNAAN APACHE ANT DI JAVA
Seperti kalimat diatas Apache Ant adalah sebuah tools build untuk mencompile coding di java untuk menjadikannya sebuah paket, tanpa memisahkan class-class yang telah kita susun sebelumnya, Sekarang saya ingin membuat paket sederhana java untuk menampilkan nama dengan bantuan NetBeans.
Pilihan untuk editor java anda seperti NetBeans, jcreator, eclipse atau tools editor java lainnya. Kali ini saya menggunakan NetBeans sebagai editor.
Saya Akan Menyusun Sebuah projek sederhana dengan nama projek Latihan, Di dalamnya Berisi Package com.syarief.belajar didalalam package com.syarief.belajar terdapat 2 class yaitu, class Namasaya class yang dimana dibuat untuk menampung nama, dan yang satu lagi class Main, yaitu class yang dimana untuk memanggil nama dari class Namasaya tadi.
Jadi alurnya seperti ini :
Nama Projek = Latihan
Nama Package = com.syarief.belajar
com.syarief.belajar = class Namasaya, dan class Main.
Class Namasaya = berisi tentang nama yang ingin ditampilkan
Class Main = pemanggilan Class Namasaya
Jadi, Strukturnya seperti ini :
Sekarang untuk class Namasaya.java diketik coding seperti ini :
Untuk class Main.java diketik coding seperti ini :
Nah, sekarang masuk pada intinya karena kita ingin membuat project latihan diatas compile codingnya dengan menggunakan ant task, agar project tersebut dijadikan menjadi menyatu dengan paket , maka perlu kita buat coding ant task nya di file build.xml. perlu diketahui fle build-impl.xml atau fle build.xml yang ada di root folder dari project NetBeans. File build-impl.xml adalah jantung dari project NetBeans, jadi tidak boleh diedit secara manual sama sekali, sedangkan fle build.xml bisa diedit dengan memasangkan task yang ingin kita eksekusi. Dalam build.xml ada beberapa target dengan nama spesial, target-target ini dieksekusi setelah perintah tertentu di dalam NetBeans selesai dilaksanakan. Misalnya target “-post-compile” akan dilaksanakan setelah proses compile di NetBeans selesai.
Sekarang kita buat coding Ant Task di dalam file build.xml untuk mengcompile (compile) , menjadikan 1 paket (package) , menjalankan paket tersebut (run) dan membersihkan project tersebut bila ada kesalahan coding (clean).  

Sebelum di compile struktur file project Latihan seperti ini :

Sekarang kita Coba melakukan compile, package, run, dan clean pada Apache Ant :
Buka command prompt, cari letak project anda berada :
 Ketik ant compile maka berhasil di compile hasilnya seperti ini :

Ketik ant package maka berhasil di jadikan paket : 

Setelah di compile, di package struktur file project Latihan pun menjadi seperti ini :

Ketik ant run maka berhasil menampilkan hasil dari project latihan tersebut : 

Ketik ant clean jika ingin mengembalikan project tersebut ke strukur file semula :

Tapi ingat setelah anda clean maka filenya akan kembali ke semula jika anda ingin menampilkannya kembali (run) lakukan lagi proses compile dan package. Sekarang coba anda pindahkankan project tersebut kemana saja dan jalankan. :)
SYSTEM ERROR YANG MUNGKIN TERJADI
Pada dasarnya dari banyak contoh kasus yang terjadi, dalam pembuatan  project java adalah menampilkan Laporan Saat di build dan clean jadikan menjadi .jar banyak yang bertanya koq programnya running tapi pada saat tampilkan laporannya gak muncul ? Saat pindah computer ke computer lain koq aplikasinya gak running padahal dikomputer sebelumnya running ? itu karena file class yang dipanggil blum dijadikan dalam satu paket, dengan adanya Ant Task Memudahkan untuk membuild tools untuk menjadikan suatu  paket.
Untuk belajar mengenai JasperReport dan lebih lengkapnya penggunaan Ant Task untuk membuild paket. Coba baca tahap demi tahap tutorialnya di :
Untuk Tutorial Ant Task Versi PDF Saya dapat di download di
http://www.4shared.com/office/F0c5oM2zba/Ant_Task_Syarief.html

Instalasi CYGWIN

Cygwin adalah sekumpulan tool tool linux yang bisa dipakai di Windows.

Cygwin adalah “Virtual Manager” agar perintah di Console Linux bisa berjalan di Windows.  Apa manfaat yang paling terasa dengan Cygwin? jika kita seorang admin jaringan atau Programer Linux, maka manfaat dari Cygwin akan memudahkan aktivitas kita tanpa harus berpindah ke OS Linux. Contohnya misalkan mengedit file dengan Vim Editor, Meremote Server dengan SSH atau melakukan kompilasi Program dengan GCC.

Dalam kasus ini, Cygwin di install sebagai prasayarat dalam isntalasi Android NDK. Android NKD adalah tool development dari Google yang digunakan untuk membuat aplikasi Android dengan C++ atau C.
Langkah instalasi

1. Download installer Cygwin di https://cygwin.com/install.html. Perhatikan OS yang kita pakai, jika memakai Windows 64bit, disarankan pake setupx86_64.exe. Ini adalah stub installer, installer ini nantinya akan  minta koneksi internet agar bisa menginstall perintah perintah linux yang dibutuhkan. Jadi pastikan saat instalasi anda tekoneksi internet.uhhh...Installnya lama krn harus OL....sabar aja ya

2. Jalankan setup.exe tadi dan pilihlah mirror terdekat. Kalau kita di indonesia maka yang tedekat adalah server di singapure (domain dengan ending .sg atau default aja cygwin.server)
3. Saat memilih paket yang akan di install, pilih default. Klik next

4. Tunggu sampai instalasi selesai. Dengan Seting default, isntalasi berkisar antara 15 -30 Menit.
Setelah selesai, silahkan buka Shortcut didesktop dengan nama cygwin terminal. Cobalah memberikan perintah seperti layaknya di linux.  Jika ada perintah yang tidak ditemukan, itu artinya perintah tadi berlum di install.

Cara mengupdate/menambah paket lain

Untuk menambah paket atau program lain, cukup jalankan kembali setup.exe dan saat pemilihan paket, silahkan pilih paket yang anda inginkan.


Terimakasih...