Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 08:37   #1
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию Android - not java?

Приветствую.

Продолжаю "похождения", попытки втянуть в разговор андроид программистов, если есть такие здесь.

Собственно я, можно сказать, уже 90% знаю android, и в больших, структурированных проэктах приходиться явно повторять часть кода, но так, что "отмодулировать", ну разбить на части что-ли, как то уже все, не выходит. И тут меня снова, в какой раз уже, начинает терзать мысль перехода на Scala, т.к. язык то "плагинизированный", чего нет - добавим, что есть - упростим.

И вот вопрос, как считаете, а может уже и сами используете, имеет ли смысл перейти, в моей ситуации, с Java на Scala? То что есть возможность - это точно, но вот если начинать писать проект, потом не упрусь ли я, и не дай бог придеться возвращаться на Java, это сами понимаете, потеря времени -> денег -> репутации.

Прошу к "столу". Спасибо.
BOBAH13 вне форума Ответить с цитированием
Старый 03.01.2012, 09:24   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ну, меня назвать Android программистом, конечно, нельзя но всё-таки. Мне кажется, что Android - это всё-таки Java платформа. И не стоит кодить на Scala. Ну, ИМХО, конечно.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.01.2012, 09:45   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Ну, меня назвать Android программистом, конечно, нельзя но всё-таки. Мне кажется, что Android - это всё-таки Java платформа. И не стоит кодить на Scala. Ну, ИМХО, конечно.
Ну на самом деле если смотреть то что в конце, то это байт код для JVM. Собственно что Scala, что Java выдадут его, то есть по сути, это не проблема. Я бы перешел хоть сейчас, но пока вот смущает какая-то не понятка.
1. Потянут ли Scala мои будущие колеги в команде. Обещают расширение коллектива.
2. Выдержит ли Scala на Android большой проэкт (хотя почему и нет?)
3. Ну вот как то жмешь в Java Ctrl + Space, и получаешь подсказку для любого контекста в любом месте кода, и живешь спокойно. В Scala, уже пробовал, жмешь и получаешь типа $#1: Bundle, что за?! Как то так. Т.е. уровень знания платформы Android должен быть на высоте, чтобы писать вот так "как есть". А мне сидеть потом и контролировать каждого сотрудника, не в прикол.

Но все минусы, перебивают плюсы Scala, и иметь такой инструмент на любимой платформе просто щастье, но вот как то пока никак не дойду до полного перехода, все как то не гладко.
BOBAH13 вне форума Ответить с цитированием
Старый 03.01.2012, 23:56   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

За изучение Android принялся буквально вот недавно...Довольно интересная платформа...
Со Scala не знаком, а вот как раз немного заодно ознакомился в общих чертах, что сие такое - с теоретической точки зрения вполне возможно Java заменить на Scala, но просто нужно ли самому себе усложнять жизнь и не будешь ли потом сам же об этой затее жалеть:
-> расширение коллектива - я так думаю, проще будет осуществить, если команда будет использовать Java - ну если проще, то Java разработчиков проще найти под Android...Хотя честно понятия не имею насчет востребованности Scala разработчиков.
-> большой проект - ну вобще-то как говорится "кто не рискует тот не пьет шампанского", но есть и обратная сторона медали:
Цитата:
потеря времени -> денег -> репутации.
-> удобство и относительная простота разработки - зачем лишать этого команду (это типа к 3му пункту...).
Посему мое мнение все же - Android это именно Java, остальное - эдакая экзотика, и не запрещено, но и использовать придется с риском...

Цитата:
но так, что "отмодулировать", ну разбить на части что-ли, как то уже все, не выходит.
Просто интересно, а в чем загвоздка?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 04.01.2012, 02:00   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Недавно на хабре писали на эту тему. По крайней мере о пороге вхождения новых людей (с опытом на Java) в разработку на Scala.

Почитать здесь
MaTBeu вне форума Ответить с цитированием
Старый 04.01.2012, 06:38   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Недавно на хабре писали на эту тему. По крайней мере о пороге вхождения новых людей (с опытом на Java) в разработку на Scala.

Почитать здесь
Да, читал. Я для себя решил что будь шанс Scala - 100%, но вот тут больше проблема неуверенности, мол все ли так будет в Android. Вчера попробовал, сыровато, но уже что-то. Пока все же буду на Java, но как только шанс, не задумываяюсь перейду на Scala.
BOBAH13 вне форума Ответить с цитированием
Старый 04.01.2012, 10:03   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я бы пока работал на Ява, и параллельно для себя учился бы на другом языке. Реализовывал бы мелкие вещи, не сильно влияющие на основную работу (ну может там маленькие утилитки или еще что). Так можно привлечь внимание других участников команды. В любом случае Вы в проигрыше не останетесь - не понравится команде, у Вас будет дополнительный опыт. Понравится - Вы уже будете уметь некоторые вещи.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.01.2012, 14:19   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Раз уж вы заинтересовались Scala, то советую вам взглянуть на Groovy. Язык очень похож на Scala, но появился раньше и тоже компилируется в байт-код для JVM. Многие говорят, что Groovy быстрее Scala, но я не могу ничего сказать - из них двоих работал только на Groovy.

Спросил у знакомого по поводу Android и Scala, он сказал что проект еще сыроват, но переходить однозначно стоит. Если его будут развивать, то это будет значительным ускорением разработки. Однако приложения на Scala будут тяжелее весить, чем аналогичные на Java. Хотя есть какая-то тулза (ProGuard кажется), которая ужимает готовое приложение. Ну и пока что Scala не так популярна как Java, поэтому рискуете попасть на дефицит кадров.

Последний раз редактировалось MaTBeu; 04.01.2012 в 14:32.
MaTBeu вне форума Ответить с цитированием
Старый 04.01.2012, 20:44   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Раз уж вы заинтересовались Scala, то советую вам взглянуть на Groovy. Язык очень похож на Scala, но появился раньше и тоже компилируется в байт-код для JVM. Многие говорят, что Groovy быстрее Scala, но я не могу ничего сказать - из них двоих работал только на Groovy.

Спросил у знакомого по поводу Android и Scala, он сказал что проект еще сыроват, но переходить однозначно стоит. Если его будут развивать, то это будет значительным ускорением разработки. Однако приложения на Scala будут тяжелее весить, чем аналогичные на Java. Хотя есть какая-то тулза (ProGuard кажется), которая ужимает готовое приложение. Ну и пока что Scala не так популярна как Java, поэтому рискуете попасть на дефицит кадров.
Да согласен. На счет дефицит кадров, у меня список того чего знаю уже хороший, а это хочу провернуть для улучшения и повышения качества кода в android. На счет веса, да немного тяжелей становяться, но у меня тут такие приложения, в общем с кучей графики, что прибавляет в весе намного, намного больше чем код.

В принципе думаю все сошлись на одном и том же, пока пробовать Scala для Android, и смотреть как оно, искать лучшие варианты для использования, и когда наступит момент Х, то перейти уже безболезненно и уверенно.

Спасибо, было действительно интересно подискутировать.
BOBAH13 вне форума Ответить с цитированием
Старый 05.01.2012, 04:42   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Кстати, не ожиданно, только что нашел, что думаете? )) По моему очень интернесно http://www.eclipse.org/Xtext/xtend

UPD:
В общем остановился всеравно на Scala, а вот почему.

Очень частая операция, упростить ее не особо можно. Java:
Код:
...

private Button buttonSay;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    buttonSay = (Button) findVIew(R.id.buttonSay);

    buttonSay.setOnClickListener(new View.OnClickListener() {

		@Override
		protected void onClick(View view) {
			// to do something
		}
	}
}
Вроде ничего такого, но дело в том что это будет писать многократно.

Что мы видим в случае со Scala. Пишется один раз только
Код:
...
class HelperButton(button: Button) {
        def ->(f: () => Unit) = {
            button.setOnClickListener(new OnClickListener {
                def onClick(view: View) {
                    f()
                }
            })
        }
    }

implicit def button2HelperButon(button: Button) = new HelperButton(button)
И теперь самое прикольное:
Код:
...

lazy val buttonSay = findView(TR.buttonSay)

override def onCreate(savedInstanceState: Bundle): Unit = {
        super.onCreate(savedInstanceState)
	setContentView(R.layout.main)

	buttonSay -> /* to do something */
}
Ну как? Кстати lazy val buttonSay - говорит что мол когда надо, тогда и узнаем что же хранит это значение. А почему buttonSay -> () а не buttonSay.setOnClickListener(), это посмотрите как круто сделано, описываешь класс, в нем перегрузку оператора (сам выдумываешь какой хочешь, т.к. по сути операторов вобще нет в Scala, все методы), а потом в местах где встречается Button обварачиваем в наш класс который реализует setOnClickListener через -> я думаю это просто супер. Как видите я сам под впечатлением большим.

Последний раз редактировалось BOBAH13; 05.01.2012 в 09:32.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц