Ninguém cria jogos ou app graficamente intensivas fazendo freela de uma semana. Freela é para aplicações simples, que normalmente seriam feitas usando alguma UI baseada na web. Eu diria que estas competindo por clientes com desenvolvedores Angular e Vue.js e não com desenvolvedores iOS e Android.
No mais, se react-native está conquistando espaço no mercado, isso significa que desenvolvimento mobile nativo esta em alta e o browser em desuso.
Nem as vantagens né… Se preciso criar uma UI pra cada plataforma não tenho mais a economia de trabalho prometida e ainda continuo precisando de profissionais iOS e Android na equipe.
Alguém aqui acha que um programador web vai conseguir criar uma UI nativa sem ter experiência com iOS ou Android???
O core de uma aplicação mobile é a UI. Não é só estética, é onde você vai gastar 80% do seu tempo ao criar uma app mobile.
Ao criar uma UI para cada plataforma, você esta aumentando consideravelmente o tempo de desenvolvimento, proporcionalmente ao número de plataformas que pretende suportar.
Como você mesmo disse, apenas apps simples e sem diferenciação da pra fazer em 1/4 do tempo e com um único código para todas as plataformas. Minha dúvida é, até que ponto é vantagem criar uma app simples e sem diferenciação usando tecnologias nativas em vez de uma site em HTML/CSS/JS?
Também não vejo vantagens, pior ainda pela linguagem ser javascript. Desse jeito é melhor programar normalmente pra cada plataforma com o que for oficial. Se o oficial fosse ruim, tudo bem procurar alternativas.
Jogos ou app graficamente intensivas já faz um bom tempo que o desenvolvimento nativo tem perdido espaço pra ferramentas como o Unity, que pode ser programado, adivinhe só, em JavaScript.
Freela é para aplicações simples, que normalmente seriam feitas usando alguma UI baseada na web. Eu diria que estas competindo por clientes com desenvolvedores Angular e Vue.js e não com desenvolvedores iOS e Android.
Mas aplicações que vc diz “simples” são o mercado de mobile, 99% dos apps seriam estes que vc diz como simples, apps com geolocalização, maps, câmera, pagamentos, forms, notificações, várias requisições, nem apps como facebook, uber ou apps bancários não fogem muito disso.
E estes mesmos apps eram feitos nativos, eu sei pois eu mesmo peguei freelas para fazer estes, os mesmos serviços que hoje pego com react-native, e vejo concorrentes mandarem propostas para desenvolver nativamente, e no caso que vc diz de UI baseada em web, acredito que queira se referir a Ionic e similares, estas webviews nunca prestaram, a UI era ruim, os componentes limitados, desempenho inferior, e até por isso que alguns tem um grande “preconceito” com tecnologias híbridas.
Mas react-native, xamarin native, nativebase, se é possível construir algo nativamente, é possível fazer com estes e com o mesmo desempenho.
A UI nativa é feita em C# no Xamarin Native assim como a UI nativa em React-native é feita em JavaScript no React-native, a diferenciação fica apenas no fato de vc utilizar elementos exclusivos de cada plataforma em suas devidas UIs
Assim sendo vc continua reaproveitando o geral da UI, fazendo a chamada de apenas estes elementos que quer diferenciar
E não, não precisa ter experiência nenhuma com iOS e Android, pois o que vc não está entendendo é o simples fato que vc não necessita do nativo, pois o React-native, Xamarin Native, eles tornam o JavaScript e C# o nativo, e quando se diz construir nativo em relação a estes, esse é o nativo.
Continua levando 1/4 do tempo, vou te dar um exemplo, um dos piores elementos para se acertar são os buttons, pois o Android e o iOS usam padrões diferentes, porém vc não precisa acertar pois já existem várias bibliotecas que já lhe dão os elementos prontos, assim basta vc importar e usar, e quando geram tanto pra um quanto para o outro, o elemento estará lá perfeito nos dois, segue alguns exemplos:
Diferenciar UI não quer dizer fazer uma pra cada, e sim fazer uma ou outra diferenciação
E quanto a sites a resposta é simples, basta buscar pesquisas ai na web, o público não abre os sites, o público quer uma ferramenta que irá resolver o problema dele, ele abre a store e busca o app que irá resolver, e não abre o navegador para obter a solução
O recomendado og é abrir links na própria aplicação, e não o navegador, pois o público não gosta.
Basta pegar exemplos como facebook, instagram, iFood, airbnb, apps de bancos e tantos outros, todos podem ser acessados através do navegador, mas seu maior volume de acessos, é através dos apps mobile.
Não me levem a mal, mas o post acabou fugindo da pergunta inicial. Eu apenas queria saber se vale a pena ainda programar em Java, só isso. Xamarim, React, Swift e outros… por enquanto não me interessa, até eu aprender mesmo a programar em Java essas tecnologias já se tornaram obsoletas, dando espaço para as novas. Estou entrando na faculdade agora, não sei nada de programação, e estou querendo aprender pelo menos por enquanto Java.
Isso faz parte, em forum de discussão. 0 ou 1 é no stackoverflow.
Se está na faculdade, além de pensar em abrir próprio negócio, estaria também com a possibilidade de ir pro mercado de trabalho? Nesse ponto, estudar Java vai ser muito importante, pela grande quantidade de legados.
Eu acredito que vale a pena estudar sim as ferramentas de trabalho, no caso como as linguagens funcionam, pois como muita gente disse, depois vai ficar mais fácil de aprender quando necessário.
Aliás aprender mais sobre as linguagens vai muito além do simples programar códigos, é você saber quais são as limitações e quais as vantagens de uma pra outra.
No caso de abrir um negócio próprio, busque alem de algo funcional, algo que também chame a atenção, afim de conseguir atingir um maior numero de clientes.
Se você realmente quer aprender java, não dependa da faculdade para isso, não importa que faculdade seja, lá você não irá aprender programação de verdade.
Então vamos aos estudos:
Se você prefere livro, o @jallisson_jallis te mandou um.
Se prefere vídeo-aulas, ótimo, temos Alura e Algaworks que focam muitos assuntos.
Curso presencial acho que fica díficil devido trabalho/faculdade, além do que, livros/vídeo-aulas não deixam a desejar
Mas não existia suporte nativo para jogos ou app graficamente intensivas antes. Só é possível criar um jogo nativo de fato, do iOS 7 pra cá.
Certo, mas essas definições mudam. Minha impressão é que estamos no fim da era App 1.0[1]
[1]Se estou certo, Apps 2.0 será definido por apps altamente dinâmicas e graficamente intensivas, ao ponto que em alguns casos será difícil diferenciar apps de pedir comida de um jogo.
Uma coisa é fato, apps nativas evoluirão além dos frameworks híbridos nativos da mesma maneira que evoluiu além dos frameworks híbridos baseados na web, pelo simples fato que, enquanto os criadores dos frameworks estão corrigindo os bugs pra fazer sua app simples continuar rodando no iOS e Android, os desenvolvedores da Apple e do Google estão constantemente evoluindo suas plataformas e mudando a definição do que é uma app simples. Por exemplo, ao introduzir APIs nativas para sprites, physics, particles, colliders, texture atlas, etc. torna-se mais simples criar um jogo ou uma app graficamente intensiva. O resultado é mais jogos e apps graficamente intensivas sendo criadas nativamente.
Desculpe, mas isso não significa que vai levar mais tempo pra escolher entre as bibliotecas existentes, sem contar que esse problema só existe no React. Um programador Android não precisa se preocupar com os botões do iOS. Pra mim isso significa que o programador react perde mais tempo com frivolidades quando deveria estar trabalhando na app.
Acredito exatamente no contrário, se analisarmos o mercado atual, o que está acontecendo é que os usuários estão superando aquela “vibe” das aplicações cheias de coisas e as que estão emplacando são justamente as simples e minimalistas, maior exemplo disso é o próprio Google, que prima por colocar apenas o essencial em suas interfaces
Sinceramente acredito é que estes frameworks estão cada vez evoluindo mais e que o nativo irá superar estes apenas em casos muito específicos, casos estes que para 99% do desenvolvimento mobile não afetara
E acredito que as próprias grandes corporações estejam vendo isso, pois o próprio Google tem investido pesado em uma tecnologia hibrida, o flutter, e já está lançando apps utilizando este
Quanto a questão de jogos, nesta até concordo que o nativo pode vir a obter um bom espaço, mas em alguns casos, pois como og quase todos os jogos são de disputa on-line, existe a necessidade de fazer com que este sejam perfeitamente iguais e obtenham as mesmas reações em ambas as plataformas, e isto é mais fácil de garantir utilizando Unity e outros.
Não leva tempo, o tempo que leva é o mesmo que o dev java vai levar para escolher o formato e cor do botão, basta ter usado uma ou duas vezes as libs que quando precisar já saberá exatamente qual irá atender sua demanda
E o programador Android não precisa se preocupar com os botões do iOS, ai estamos falando apenas de grandes empresas que possuem um programador pra produzir para cada plataforma, pois senão após terminar seu app android, terá de se preocupar em desenvolver o app inteiro para iOS, ou então em pagar alguém para isso
Pois pela experiencia que tenho no mercado digo com toda certeza, os clientes querem seu app disponível nas duas plataformas, e se vc não fizer, acham quem faça
E o google lhe aponta para sites que irão resolver seus problemas
Porém no mobile, mesmo sites bem responsivos perdem na utilização se comparado a apps, além do fato dq um app baixado estará sempre a mão para ser acessado facilmente, e as pessoas gostam disso, enquanto um site terá de ser acessado cada vez