Tenho 40 anos de idade, e estou iniciando no curso de CST em Análise e Desenvolvimento de Sistemas, tenho pesquisado no mercado, uma tendencia ou melhor dizendo, uma demanda maior por programadores Python, R, Go, e outras, e vejo muito pouco sobre Java. Diante disso venho fazendo uma reflexão se vale apena investir em Java, em um mercado já saturado de programadores Java. Sei que existe ainda muita coisa legada, muitos sistemas desenvolvidos em Java que demandarão programadores neste nicho.
Vale a pena investir em Java?
Vale a pena ainda aprender Java?
82 Respostas
Resposta curta e grossa: não.
Resposta mais ou menos adequada;
Onde mora? Que sites você pesquisou para identificar que a demanda de java está em baixa?
Particularmente, todas as semanas, recebo um média de 4 a 5 propostas para processos seletivos para oportunidades java. Em todo o Brasil e, ultimamente, fora dele.
Java é uma linguagem consolidada no mercado, tem lá seus problemas, suas limitações e seu mau uso, mas, isso você vai ter em angular, python ou go.
Vale a máxima “não existe bala de prata”.
Portanto, se você quer aprender algo, foque nisso. Mas, se está iniciando o curso, creio que será obrigado a aprender essa linguagem.
Tanto quanto qualquer outra linguagem. O erro maior é apostar numa única linguagem/tecnologia, excluindo todo o resto. Um bom desenvolvedor deve estar aberto a mudar de tecnologia conforme a necessidade, mesmo que tenha suas preferências. Não se apegue à linguagens. Elas são apenas ferramentas.
Falando em linguagens como Go e R, quantas vagas realmente existem para essas linguagens? E quantas de Java? Essa “demanda maior” é baseada em fatos? Elas estão em crescimento, mas há efetivamente mais vagas que para outras linguagens? Qual rápido isso mudará? Será da noite pro dia, ou levará 5/10 anos?
Se você está estudando, a primeira linguagem costuma ser um grande desafio, mas a partir daí você se sentirá mais confortável para aprender outras. Possivelmente você não será um expert em 20 linguagens, mas terá bagagem suficiente para não se sentir perdido ao iniciar em uma outra.
Se seu curso demanda Java, aprenda Java. Mas considere aprender juntamente os conceitos de outras, principalmente se tem paradigmas diferentes (como programação funcional em Python e Lua). Novamente, não precisa estudar unicamente essas, nem se tornar expert nelas, mas entender quais as semelhanças e diferenças de linguagens como Java e C#.
Abraço.
Eu iria além e diria: não foque na linguagem, ela é um mecanismo para implementar conceitos. Concentre-se nos conceitos (sejam eles de programação estruturada, programação orientada a objetos, orientada a aspectos, orientada a serviços, etc, etc, etc).
Respostas bastante esclarecedoras, mas o meu propósito é Empreendedorismo. Sei que não tenho chances de emprego com 40 anos de idade. Quero estudar para abrir meu próprio negócio futuramente. Considero aprender uma linguagem para poder dar um pontapé inicial em desenvolvimento de soluções para a minha região. Aonde moro há uma demanda crescente por Mobilidade; restaurantes, bares, soverterias, empresas de transportes e outras que querem utilizar sistemas mobile para atendimento in persona aos clientes.
Isso é balela. Se tiver capacidade e interesse, vai conseguir.
Cara, mobilidade não tem nada ver com desenvolvimento de sistemas, fique atento a esses conceitos e palavras que parecem uma coisa e representam outra
Se vai abrir seu próprio negócio e vender um produto, entenda que, para o usuário (seu cliente), pouco importa o que foi usado, ainda mais nesse segmento que você está mirando, em que a maioria é leigo quanto à tecnologia. Você pode usar o que quiser, o que for mais produtivo e coerente para cada caso.
Provavelmente, o que atenderá será uma combinação de tecnologias: backend em uma linguagem qualquer (Java, php, javacript/nodejs), frontend javascript nos terminais de atendimento (rodando via browser) e em Java no Android, e até mesmo Swift no iOS.
Pergunte para qualquer usuário de smartphone: quantos sabem que seus queridos apps foram construídos em Java e rodam numa máquina virtual? Mais ainda: quantos sabem o que isso implica? Quantos se importam, desde que os apps funcionem de forma satisfatória?
Acredito que ele disso “mobilidade” no sentido de “dispositivos móveis e afins”. Dá uma relaxada, cara, não se apegue tanto às palavras.

Abraços.
Estou de boa, apenas por ter entendido que ele se referiu à dispositivos móveis utilizando o termo mobilidade que eu comentei, afinal, são conceitos totalmente distintos.
Quando falo mobilidade em um fórum de TI, você entende o que? Construir cadeira de rodas é que não é? 
Mobilidade é mobilidade em qualquer lugar. Agora, se você usar o termo “aplicativos móveis”, talvez ficasse mais inteligível e demonstrasse o que realmente quer.
O teu interesse poderia ser, realmente, construir cadeiras de rodas inteligentes, por que não?
Ola @wsilvaasc,
nesse tipo de pergunta, eu sempre digo que mais importante que se especializar em ferramentas é se especializar em um nicho ou classe de problemas que se pode resolver com computação. Acho que você deu um grande primeiro passo ao definir o que você espera da área:
- mobilidade (você já definiu seu nicho)
- empreendedorismo (modelo de trabalho, isso é importante também)
Sendo assim, penso que o próximo passo é você estudar e se especializar nas ferramentas que fazem sentido nesse seguimento: quais linguagens e frameworks são usados para construir apps Android e iOS ? Existe alguma linguagem ou framework que permita desenvolver para os dois dispositivos ? E para o back-end ? Acho que essas são as perguntas que você precisa buscar responder. Por fim, levando em conta que você deseja empreender, é muito importante considerar a produtividade das ferramentas que você vai escolher. Nesse sentido, Java realmente deixa a desejar para linguagens mais modernas. Se eu estivesse começando nessa área, hoje, eu partiria para estudar Javascript. Com uma linguagem eu conseguiria desenvolver tanto o app mobile quanto o backend, usando React Native ou Quasar e Node.js para o backend.
Entendo seu ponto de vista. Mas eu me referir a Mobile de TI. Obrigado!
É possível fazer o frontend and backend com Python utilizando o Django? Não tive muito entusiasmo com o Kivy for Android.
Não conheço muito de Django, mas está meio confuso o que você quer. Django é um framework web, o que Android tem a ver? Ou está querendo fazer um webapp, para rodar dentro do navegador do celular?
Se quer reduzir a quantidade de ferramentas e linguagens a usar, a recomendação do @rmendes08 é provavelmente a melhor: vá de Javascript. Há frameworks tanto para front quanto backend. E é uma linguagem com crescimento constante no mercado.
Abraço.
Bom, nunca ouvi falar de usar Python para mobile …
Acho que outro fator a ser considerado é a comunidade em torno da ferramenta. Uma das forças do Java é justamente a sua comunidade, que além de ampla é bastante atuante. Particularmente, eu não vejo o Python com tanta força fora das comunidades de Data Science, em mobile, menos ainda …
Vá de javascript:
Nodejs no backend
React/redux para aplicações mobile
React/angular/vue para web
Me xingou todo!
Mobile profissional: Qualquer linguagem que entregue a qualidade de uma UI nativa para o usuário. Já que falou em tendências, Kotlin no caso de Android, ou vai de Java mesmo se preferir. iOS seria outro produto, pode até cobrar mais caro.
Back-end: O que entregar melhor desempenho em requisições e menor consumo de infra pro usuário, por exemplo Go como já citou. Isso seria o ideal, mas por preguiça de aprender até se tornar realmente profissional, se fosse eu dentro da minha realidade iria de C# com .Net Core.
[RESOLVIDO] Obrigado pelas respostas. Já decidi! Não vou de nenhuma! Nem Java, nem C#, nem Python eu vou mesmo é de Clipper, Cobol e banco de dados Paradox. Abraços!
Certamente vai ganhar mais dinheiro com Cobol.
Considere como sarcasmo meu. Na verdade vou focar primeiro nos estudos da faculdade, e ir programando algumas coisinhas em Java.
Como assim???
Fiz várias entrevistas de emprego, e em todas eu não fui selecionado, mesmo tendo mais competências do que os outros concorrente. Certa vez fui em uma entrevista de emprego, e a menina do RH me perguntou quais as linguagens e tecnologias que eu conhecia, ai eu fui falando todas que eu conheço até então… terminando a entrevista ele chamou uma outra pessoa com idade mais ou menos entre 20 e 26 anos. Antes essa mesma pessoa tinha me falado que acabara de sair da faculdade e que não tinha muitas experiencias com nada. Ficou com o emprego! Eu fiquei chupando dedo!
Existem N cenários e razões pelas quais as pessoas são ou não contratadas.
Existem empresas cujo perfil e filosofia não aceitam pessoas com mais idade e, por outro lado, há empresas que preferem pessoas com uma faixa etária mais elevada, por entender que eles representam estabilidade e segurança, confiabilidade. Embora tudo isso seja relativo e dependa de pessoa para pessoa, o mercado age assim.
Já passei por situações onde eu não fui contratado por “saber mais que o gestor”. E ele tem razão. Se eu sei mais que ele, devo buscar algo melhor.
O fato dele ser o “dono” e gestor, não tem fundamento por você saber mais que ele.
Ser dono e/ou ser gestor não significa, necessariamente, que a pessoa saiba algo sobre aquilo, não é?
O dono de uma casa pode não saber construir uma casa…
O gestor da obra de construção da casa pode ser o filho do dono do imóvel e ele pode não entender nada de cosntrução, mas, estar lá para ver se os operários trabalham.
O que importa no mercado brasileiro é o salário. Quanto mais baixo melhor! Eles preferem o inexperiente porque eles não terão argumento para um pedido de aumento de salário tão cedo, e quando esse dia chegar, é demissão na certa.
Talvez isso ocorra em empresas falcatrua. A maioria das empresas quer pessoas que resolvam o problema, tenham vontade e comprometimento.
Essa visão “esquerdista” (a empresa só explora, o funcionário só é explorado) não é de todo assertiva.
Aliás, a legislação brasileira e a cultura do brasileiro contribuem para que o número de empreendedores seja pequeno.
O que eu posso dizer é: se não está satisfeito, faça algo. E você já acenou que quer fazer isso, que quer empreender. Então, vai lá, faz o teu caminho.
Errado é ficar preso a conceitos ultrapassados (sim, emprego formal é um conceito ultrapassado).
Mobile profissional: Qualquer linguagem que entregue a qualidade de uma UI nativa para o usuário
Sinceramente falando, mobile profissional hj é híbrido. E pra mim og o melhor é React-native
Back-end: O que entregar melhor desempenho em requisições e menor consumo de infra pro usuário
GraphQL com Elixir <-- Tem uma empresinha de mensagens chamada WhatsApp que concorda comigo!
Eu se estivesse indo pro mercado og iria forte no JavaScript
Og o mercado desktop fica cada vez menor, e mesmo nesse hj temos o Electron
Com um bom embasamento em JS em pouco tempo estará apto pra entregar aplicações profissionais, Web (React, Angular, Vue, etc, etc, etc), Mobile (React-native, Ionic, NativeScript), Desktop (Electron), cuidar de do back-end com Node
E por mais que cada framework JS tenha suas particularidades, a curva de migrar de um para o outro é bem menor dq migrar entre linguagens
Isso tudo somados a Redux, GraphQl e outras técnicas, é oq está tomando conta do mercado, alta performance, escalabilidade, curva de aprendizado, custo de produção entre outras vantagens
Não tem como nada superar UI nativa. Não conheço react native, mas se isso entrega UI nativa, sem problemas, entra na mesma condição que falei, a única questão é que você gosta de js.
Cara, não misture as coisas. Ninguém está falando de política aqui. Não sou esquerdista, direitista ou nem mesmo centrista…
A questão não é satisfação, é visão do que o mercado exige.
Conceitos tecnologicos não ficam ultrapassados, eles ficam obsoletos ou seja com menor uso, mas nunca deixando de existir.
Mas respeito sua visão, espero que respeite a minha.
Cara, eu não misturei nada, apenas quis ressaltar que a visão de que “todo patrão é o mal e todo trabalhador é explorado” é falsa.
Sim, a questão é satisfação. Se você não gosta do que faz, as chances de não conseguir evoluir são enormes.
E eu falei de conceitos num sentido fora da tecnologia, de maneira bem clara.
A questão não é gostar de JS e sim do fato de construir um APP com a mesma performance de nativo em 1/4 do tempo e com um único código para todas as plataformas.
React-native entre tantos outros exemplos de APPs feitos com este estão Facebook, Instagram, Skype, Airbnb, Wix, Walmart, UBEReats
Mas mesmo que não seja com RN, que seja com Xamarin, NativeScript, Flutter, qualquer híbrido que entregue desempenho nativo (exclui-se o Ionic pois este utiliza webview, e no meu ponto de vista pessoal o APP além de lento fica uma bosta), em comparação a estes o desenvolvimento dito nativo serve apenas para construir libs a serem utilizadas nas híbridas, pois construir apps realmente nestes, é jogar tempo e consequentemente dinheiro no lixo.
Não conheço react native e nem uso esses apps. Mas como falei, se a UI for nativa, problema nenhum, será mais leve por aproveitar recursos já disponíveis e evoluindo junto ao SO. Se não for isso, a qualidade é menor. Não estou entrando na questão de economia de tempo (isso é até relativo), mas na qualidade.
Dei uma lida rápida sobre esse react native, não sei se tem forma melhor de trabalhar, mas da forma que explicaram, muita gambiarra misturando código js com view. E a view é em Html? Se for não tem como isso ganhar de UI nativa em qualidade.
Desde que seu app não precise fazer 3D ou, na verdade, qualquer coisa que exige processamento pesado, eu não vejo problema. Sobre fazer em 1/4 do tempo, é fácil pro facebook que emprega os melhores programadores web e nativo. Mas será que um programador web “normal”, isto é, sem conhecimento das plataformas nativas que o app vai rodar, vai consegui entregar alguma coisa nesse tempo?
Será uma zona como front-end pra navegador.
O react-native assim como Xamarin trabalha criando uma ponte e realizando chamadas nativas, mesmo nas análises mais severas e especializadas que já li, mesmo em casos onde pode perder algum desempenho, a diferença é ínfima, imperceptível ao usuário, e por incrível que pareça em alguns quesitos supera o desempenho do produzido com linguagem nativa, por exemplo em comparação com swift, o RN faz uma gestão melhor dos recursos da GPU
Quanto ao tempo, já construí apps utilizando tanto nativo quanto RN, só mesmo vc criando um pra entender o quanto a produção é facilitada e otimizada
Mesmo falando na comparação entre produzir um APP em RN e um em uma unica linguagem nativa, basta ver as análises de especialistas além de conversar com qualquer dev que tenha usado os dois, nunca achei um pra dizer levar mais tempo no RN, sequer o mesmo tempo, e sim todos que encontrei falam em uma redução considerável no tempo
E mesmo que os dois levassem o mesmo tempo, o em RN sairia direto pra Android e iOS, e com mais uma meia hora se quiser pra Win 10 mobile/desktop app, enquanto o outro ainda faltaria dobrar o tempo construindo pra mais uma plataforma
E mais toda a questão do reaproveitamento de código se quiser um Web App com React dai
E esse é mais pessoal porém para construir um bom layout com RN é muuuito mais fácil!
Mas será que um programador web “normal”, isto é, sem conhecimento das plataformas nativas que o app vai rodar, vai consegui entregar alguma coisa nesse tempo?
Esse sim é que vale a pena, vc nem precisa saber nada do nativo, isso já está la feito, vc constroi um mapa com traçado de rota com 10/20 linhas de código, pq basta importar a lib que está la pronta e chamar, passar os states e acabou
Aprendendo react-native em duas semana aprendendo fiz um app de serviço de entrega com geolocalização, maps, câmera, pagamento e tudo que tem direito
Quando aprendi java, swift levei muito mais até chegar no nível de desenvolvimento de um app como esse
Então você aprendeu Android e iOS antes?
Estou falando de quem programa apenas web, como ele faz se na próxima versão do iOS seu app reat native parar de funcionar?
@wsilvaasc, dá só uma lidinha aqui, por gentileza:
No mais, Go Horse!
Link?
Sua história é bastante animadora para mim. Confesso! Mas a realidade aqui aonde eu moro é outra. O que eu percebo é que vai de cada região ou cultura em que você está inserido. Outra grande dificuldade que eu encontro aqui em Itabuna-Bahia, é que a cidade é voltada para o comércio, programinhas PDV para “butecos” e padarias, aonde qualquer pirralho com conhecimentos básicos em Visual Basic 6 ou Delphi conseguem fazer. É muito raro os empresários daqui contratar uma empresa para desenvolver uma plataforma para o seu negócio.
Eu quero distância. Se precisar usar em algum trabalho ok, mas não sei pq alguem se especializaria numa ferramenta que o Facebook pode matar a qualquer momento.
Então você aprendeu Android e iOS antes?
Sim eu migrei pro react-native, antes programava em java e swift.
Estou falando de quem programa apenas web, como ele faz se na próxima versão do iOS seu app reat native parar de funcionar?
Como disse o react-native faz uma ponte para o nativo, assim operando diretamente, exatamente como um app construído em linguagem nativa, assim se parasse de funcionar seria apenas com mudanças muito grandes no core das plataformas, casos que teriam o mesmo impacto em apps de linguagem nativa, e mesmo assim apenas se os mantenedores do react-native (Facebook) abandonassem o projeto, pois com uma mudança assim garanto que resolveriam rapidamente, porém com o tamanho da comunidade mesmo que abandonassem em pouco tempo um fork já tomaria conta e talvez seria até superior ao projeto og operado pelo facebook
Já li muito material quando estava estudando a possibilidade de migrar, assim não é algo tirado de apenas uma ou outra fonte, mas sim uma constatação do resultado de várias pesquisas
Porém com uma pesquisa rápida no google já temos resultados que apontam isso:
É impressão minha ou os links são iguais apenas postado em datas diferentes?
Mas enfim, não da pra levar a sério se a pessoa não sabe o básico de programação cocoa.
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
cell.textLabel?.text = toDoList[indexPath.row]
return cell
}
A tableView cria as células e as mantem numa queue interna. Elas não são criadas pelo programador justamente pra não ter problemas de performance.
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = toDoList[indexPath.row]
return cell
}
O programador de aplicação RN não pode consertar a app, recompilar e reenviar? Ele tem que criar um issue no GitHub e esperar os mantenedores do react-native pra resolver o problema?
Talvez seja uma boa considerar aquela outra tecnologia pra quem não precisa de nada graficamente intensivo e que funciona em todas as plataformas e não depende do facebook, sites em HTML/CSS/JS. Nem tudo precisa ser uma app.
Não sei se serve de consolo, mas, eu, até chegar a ser quem sou na profissão tb tive que fazer esses tais “programinhas” e, com eles, eu fui me aperfeiçoando até conseguir chegar onde estou.
Mas, cada um é cada um. De todo modo, faça sua escolha e seja feliz com ela. Abraços!
O programador de aplicação RN não pode consertar a app, recompilar e reenviar? Ele tem que criar um issue no GitHub e esperar os mantenedores do react-native pra resolver o problema?
Ai vc está se referindo a um problema no framework e não no código do APP em si, mas quando vc constroi o APP é em cima da versão atual do framework, vc clona este, então criou rodou pode quebrar o framework, pode dar a merda que for nas versões novas, o seu foi feito em cima da que estava correta, assim vai continuar funcionando.
E mesmo assim vc pode corrigir, basta dar um fork e trabalhar em cima do framework, após isso usar sua versão, se a correção for boa pode até dar um pull request, assim como acontece, muitas das funcionalidades atuais foram feitas por outros grupos e programadores que não tem na haver com o Facebook, alguns muito ativos são AirBNB, Wix e Microsoft, e vc pode utilizar o fork deles e não o original tbm
Ai já é outra questão, o que estou falando é a questão do desenvolvimento mobile nativo estar caindo em desuso para as tecnologias hibridas
Estou me referindo a mudanças grandes na plataforma que resultam em ter que modificar a app, recompilar e reenviar. Tive que fazer isso várias vezes nos últimos anos como desenvolvedor iOS pra minhas apps continuarem funcionando. Tudo que precisei foi acompanhar as novidades, mudanças nas APIs e adotar nos meus apps o mais rápido possível. Não precisei esperar ninguém responder meu “issue” no github.
Mas eu quero trabalhar na minha aplicação, não quero consertar o framework do facebook. Também não ter que escolher entre “forks”.
De fato tenho visto muitas oportunidades pedindo conhecimento de RN.
Nesse caso é ainda melhor usar o framework, pois vc não tem que ficar antenado, eles ficam, deu uma grande mudança, vc só atualiza pra uma versão mais atual do framework, gera e pronto, as chamadas do teu código continua a mesma, o que mudou foi a manipulação em baixo nível e isso terão usuários (grandes players) com bem mais interesse que seja corrigido rapidamente, assim sendo corrigidas antes mesmo de acontecer a mudança.
Assim se teu app parou, questão de 15 min vc já tem ele funcionando novamente, e em todas as plataformas.
Eu como freela é a melhor coisa, pelo preço que outros oferecem o app para iOS ou Android, eu ofereço para as duas, e ainda consigo fazer um preço menor no caso de integração web, pois este facilita muito.
Sem contar o custo em tempo, entregando app em uma semana que antes levava um mês.
Está falando de Xamarin Forms ou Xamarin com UI nativa? Xamarin Forms tem as mesmas desvantagens do react native, que @pfk66 citou. Xamarin com UI nativa é perfeito, embora não adotaria Xamarin.
@wsilvaasc concordo com @darlan_machado, também passei por algumas situações desse tipo que quase me fizeram desistir, mas aos poucos fui entendo como o mercado funciona.
Conseguir uma vaga através de um método de seleção desse tipo é complicado por que provavelmente você não vai ser bem reconhecido ao receber justamente pelo que faz, mas é necessário como primeiro passo. O negócio e não desanimar, se integrar com a comunidade e através de experiências, adquirir conhecimento, mão de obra especializada e que o mercado busca.
O Xamarin Cross Plataform ou Xamarin Native é que funciona igual o react-native, mas na verdade no react-native vc decide se quer compartilhar a UI entre todos ou uma individual por plataforma, podendo trabalhar como o forms ou como o native
Xamarin Native voce cria a UI nativa para cada plataforma, sem os riscos citados, e não uma única tela para todas as plataformas como Xamarin Forms. No react native é igual mesmo? Mas e o que você falou de uma única solução pra tudo?
Xamarin native, o native dito é o mesmo do RN, ele cria uma ponte e faz chamadas nativas, o que no ponto de vista de performance e aparência, é nativo, pois executa os componentes nativos.
A diferença do xamarin native pro forms é que o forms compartilha a UI entre todas as plataformas, enquanto o native vc pode criar uma UI para cada plataforma
No react-native vc tera dentro do framework duas pastas, android e ios, assim o ios é chamado ao criar o .ipa e o android ao criar o .apk, assim na construção do seu app vc pode criar uma única UI, caso seu APP seja simples e não necessite dessa diferenciação, assim no index enviando a rota por ali, ou então pode chamar o componente Plataform e diferenciar a rota para quando for android ou ios, porém reutilizando todo o core da sua aplicação, e fazendo apenas as modificações estéticas necessárias pra a UI ficar perfeita em cada um
Mas já digo, que a componentização é tão boa e reaproveitável em ambas as plataformas que até hoje foi apenas um caso que tive que fazer isso
Entendi, se existe a possibilidade de ser feito separado com UI 100% nativa sem mecanismos próprios, então os riscos diminuem nesse ponto.
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.
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.
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.
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?
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:
https://docs.nativebase.io/Components.html#button-def-headref Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅 react-native-elements - Cross Platform React Native UI Toolkit react-native-material-design - React Native UI Components for Material Design react-native-material-kit - Bringing Material Design to React Native
styled-components
styled-components
GitHub
react-native-training/react-native-elements
GitHub
react-native-material-design/react-native-material-design
GitHub
xinthink/react-native-material-kit
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?
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.
Moço compre logo o Livro da Deitel Java Como Programar
https://www.saraiva.com.br/java-como-programar-8-ed-2010-2870760.html?pac_id=123134&gclid=EAIaIQobChMIkN3YpJqR2QIVVrXACh0T2Ar8EAQYAiABEgLUCvD_BwE
Depois faça esse curso:
http://t2ti.com/curso/video/java/basico/java_starter_handson.php
Você vai aprender, foi assim que eu tive o conhecimento em programação em Java.
Não perca tempo com linguagem b c d é melhor que e f ou g. Estude java e pronto depois você aprende c# python xamarim e outras tecnologias.
Olha esse projeto meu, que é o que ganho dinheiro atualmente feito em java usando o Swing que é uma tecnologia não muito nova:
SIP
Apesar do tópico estar solucionado,
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.
Marketing e design é a alma do negócio.
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
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.
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á.
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.
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.
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.
Isso é ótimo! No desktop também ninguém abre navegadores, apenas entram no google ou facebook.
A única vantagem da faculdade é as gatas que você vai conviver diariamente, fora isso não vejo nenhuma outra vantagem.
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.
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
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.
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
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.
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.
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.
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
Isso é ótimo! No desktop também ninguém abre navegadores, apenas entram no google ou facebook.
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
A única vantagem da faculdade é as gatas que você vai conviver diariamente, fora isso não vejo nenhuma outra vantagem
Kkkkkkkkkkkk… não seria uma mal ideia. Mas eu sou casado.
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
Você pode ter apps dinâmicas e gráficas simples e minimalistas.
Apenas ficou mais simples criar efeitos visuais e ter um game loop na sua aplicação, só importar um pacote.
Obviamente o google não quer ser vista como uma empresa de apps e não vai liderar a nova geração de apps mobile mas a tendência é o Android acompanhar o iOS em termos de capacidade das API nativas, ou então ficar pra trás na preferência do desenvolvedor.
A única vantagem da faculdade é as gatas que você vai conviver diariamente, fora isso não vejo nenhuma outra vantagem.
Fora que as mais gatas não duram muitos períodos em graduação se TI.