본문 바로가기
프로그래밍 놀이터/안드로이드, Java

Groovy 언어에 대해 살짝 알아보자~

by 돼지왕 왕돼지 2015. 2. 20.
반응형

Groovy 언어에 대해 살짝 알아보자~


IOS 8 부터 Object-C 를 버리고 Swift라는 새로운 언어를 선택했듯.. ( 아직 완전히 버린 건 아니고 혼재해서 사용하지만.. )

안드로이드 혹은 자바 진영에서도, 더 짧게 언어를 쓰기 위해 Groovy 라는 언어를 채택하려는 움직임들이 일고 있다.


<Original Java(Android) Code>

public class FeedActivity {

    TextView mTextView;


    ...


    void updateFeed() {

    new FeedTask().execute("http://path/to/feed");

    }


    class FeedTask extends AsyncTask<String, Void, String> {

        protected String doInBackground(String... params) {

            DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());

            HttpPost httppost = new HttpPost(params[0]);


            InputStream inputStream = null;

            String result = null;

            try {

                HttpResponse response = httpclient.execute(httppost);

                HttpEntity entity = response.getEntity();


                inputStream = entity.getContent();

                // json is UTF-8 by default

                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);

                StringBuilder sb = new StringBuilder();


                String line = null;

                while ((line = reader.readLine()) != null) {

                    sb.append(line).append("\n");

                }

                result = sb.toString();

            } catch (Exception e) {

                // Oops

            } finally {

                try {

                    if (inputStream != null) {

                        inputStream.close();

                    }

                } catch (Exception squish) {

                }

            }

            StringBuilder speakers = null;

            try {

                JSONObject jObject = new JSONObject(result);

                JSONArray jArray = jObject.getJSONArray("speakers");

                speakers = new StringBuilder();

                for (int i = 0; i < jArray.length(); i++) {

                    speakers.append(jArray.getString(i));

                    speakers.append(" ");

                }

            } catch (JSONException e) {

                // do something?

            }

            return speakers.toString();

        }


        @Override

        protected void onPostExecute(String s) {

            mTextView.setText(s);

        }

    }

}



<Groovy Language>

public class FeedActivity {

    TextView mTextView


    ...


    void updateFeed() {

    Fluent.async {

            def json = new JsonSlurper().parse([:], new URL('http://path/to/feed'), 'utf-8')

            json.speakers.join(' ')

        } then {

   mTextView.setText(it)

        }

    }

}







반응형

댓글